Використання GNU awkтам, де він підтримує специфічну length(array)функцію (та якусь іншу awkреалізацію, яка може підтримувати) і не потрібна, якщо файли сортуються.
gawk 'FNR==NR{seen[$0];next} ($0 in seen){delete seen[$0]};
END{print (!length(seen))?"Matched":"Not Matched"}' file2 file1
Це зчитування файлу2 в масив, викликаний seenключем, як весь рядок file2 .
Потім прочитайте файл1 і для кожного рядка, якщо він збігається з рядками в баченому масиві, а потім видаліть цей ключ.
Зрештою, якщо масив був порожнім означає, що всі рядки у file2 існують у file1 та будуть надруковані Matched, інакше відобразяться Not Matched.
Для сумісності у всіх awkреалізаціях.
awk 'FNR==NR{seen[$0];next} ($0 in seen){delete seen[$0]};
END{for(x in seen);print (!x)?"Matched":"Not Matched"}' file2 file1
Щоб ігнорувати порожні рядки / або рядки з пробілами лише у файлі2 , вам потрібно буде додати NFумову, NR==FNR && NF {...щоб пропустити їх читання в масив.
file2містить 2 рядкиA, чи потрібноfile1містити принаймні 2 рядкиA?