Различение файлов с помощью команды Linux - PullRequest
3 голосов
/ 16 декабря 2010

Какая команда Linux позволяет мне проверить, все ли строки в файле A существуют в файле B? (это почти как разность, но не совсем). Также файл A имеет уникальные строки, как и в случае с файлом B.

Ответы [ 5 ]

3 голосов
/ 16 декабря 2010

Команда comm сравнивает два отсортированных файла построчно и является частью GNU coreutils.

1 голос
/ 13 марта 2015

Используйте команду diff.

Вот полезное видео с полным использованием команды diff в течение 3 минут

Нажмите здесь

1 голос
/ 16 декабря 2010

Итак, что если А имеет

 a
 a
 b

и b имеет

 a
 b

Каким будет вывод (да или нет)?

1 голос
/ 16 декабря 2010

Вы ищете лучший инструмент сравнения?

https://stackoverflow.com/questions/12625/best-diff-tool

0 голосов
/ 16 декабря 2010
if cat A A B | sort | uniq -c | egrep -e '^[[:space:]]*2[[:space:]]' > /dev/null; then
   echo "A has lines that are not in B."
fi

Если вы не перенаправите вывод, вы получите список всех строк в A, которых нет в B (за исключением того, что каждая строка будет иметь 2 впереди, если она). Это зависит от того, являются ли линии в A уникальными, а строки в B уникальными.

Если это не так, и вы не заботитесь о подсчете дубликатов, то относительно просто преобразовать каждый файл в список уникальных строк, используя sort и uniq.

...