2

Я знаю о diff и использую циклы, но я просто не могу получить то, что мне нужно, с diff. Я в основном хочу сравнить два файла (file2.txt и file2.txt) и просто получить вывод о том, что отсутствует между ними.

Задача 1: Найти то, чего не хватает в file2.txt из file1.txt

Задача 2: Найти то, что отсутствует в любом файле. В file2.txt могут существовать некоторые строки, которых нет в file1.txt. Я хотел бы знать о них также.

diff только говорит мне, что два файла не совпадают, построчно сравнивая различия. Что мне нужно, так это программа, которая просматривает файл и не различает строки. Если строка, содержащая '/bin/mount', найдена в строке 2 файла file1.txt и находится в строке 59 файла file2.txt, мне не нужно об этом знать. Я только хочу знать, чего там нет в целом. Можно ли это сделать?

2 ответа2

5

Если вам не важен порядок строк, сначала отсортируйте файлы. Чтобы увидеть, какие строки отсутствуют в каком файле, используйте comm вместо diff:

comm <(sort file1) <(sort file2)
3

Задача 1: Найти то, чего не хватает в file2.txt из file1.txt

С grep:

grep -xvFf file2.txt file1.txt

С comm:

comm -13 <(sort file1.txt) <(sort file2.txt)

С sort и uniq:

sort file2.txt file2.txt file1.txt | uniq -u

Задача 2: Найти то, что отсутствует в любом файле. В file2.txt могут существовать некоторые строки, которых нет в file1.txt. Я хотел бы знать о них также.

С grep:

grep -xvFf file1.txt file2.txt; grep -xvFf file2.txt file1.txt

С comm:

comm -3 <(sort file1.txt) <(sort file2.txt) | tr -d '\t'

С sort и uniq:

sort file1.txt file2.txt | uniq -u

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .