Чтобы вернуть строки из одного файла, которых нет в другом файле, вы можете использовать различные методы в Bash. Вот несколько примеров:
Метод 1: использование команды grep
grep -vxFf file2.txt file1.txt
Объяснение:
- Опция
-fиспользуется для указания файла (file2.txt), содержащего соответствующие шаблоны. - Опция
-vинвертирует совпадение, поэтому печатаются строки, которых нет вfile2.txt. - Опция
-xсоответствует всей строке. - Наконец, мы указываем
file1.txtв качестве файла для поиска.
Способ 2: использование команды comm
comm -13 <(sort file1.txt) <(sort file2.txt)
Объяснение:
- Команда
commсравнивает два отсортированных файла построчно. - Опция
-13подавляет строки, общие для обоих файлов, оставляя только строки, уникальные дляfile1.txt. <(...)— это подстановка процесса, позволяющая обрабатывать выходные данные командsortкак временные файлы.
Метод 3: использование awk
awk 'NR==FNR{a[$0];next} !($0 in a)' file2.txt file1.txt
Объяснение:
NR==FNR— это условие, истинное только для первого файла (file2.txt), позволяющее нам создать массивaсо строками изfile2.txt.!($0 in a)проверяет, отсутствует ли текущая строка в массивеa, и печатает ее, если это правда.