Использование 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ключом как целая строка файла2 .
Затем прочитайте file1 и для каждой строки, если она совпадает со строками в массиве, затем удалите этот ключ.
В конце, если массив был пустым, это означает, что все строки в файле2 существуют в файле1 и будут напечатаны 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
Чтобы игнорировать пустые строки / или строки с пробелами только в случае file2 , вам необходимо добавить NFусловие в, NR==FNR && NF {...чтобы пропустить чтение их в массив.
file2содержит 2 строкиA, нужноfile1ли содержать как минимум 2 строкиA?