9 ответов:
Если у вас установлен vim,попробуйте следующее:
vimdiff file1 file2или
vim -d file1 file2вы найдете его фантастическим.
сортировать их и использовать
comm:comm -23 <(sort a.txt) <(sort b.txt)
commсравнивает (сортирует) входные файлы и по умолчанию выводит три столбца: строки, уникальные для a, строки, уникальные для b, и строки, присутствующие в обоих. При указании-1,-2и/или-3вы можете отключить соответствующий вывод. Поэтомуcomm -23 a bперечисляет только те записи, которые уникальны для a. я использую<(...)синтаксис для сортировки файлов на лету, если они уже отсортированы тебе не нужен этот.
можно использовать
diffинструмент в linux для сравнения двух файлов. Вы можете использовать -- changed-group-format и -- unchanged-group-format функции для фильтрации необходимых данных.следующие три параметра можно использовать для выбора соответствующей группы для каждого параметра:
'%
'%> ' получить строки из FILE2
" (пустая строка) для удаления линий от оба файла.
например: diff --changed-group-format="%
[root@vmoracle11 tmp]# cat file1.txt test one test two test three test four test eight [root@vmoracle11 tmp]# cat file2.txt test one test three test nine [root@vmoracle11 tmp]# diff --changed-group-format='%<' --unchanged-group-format='' file1.txt file2.txt test two test four test eight
если вы предпочитаете стиль вывода diff от
git diff, вы можете использовать его с--no-indexфлаг для сравнения файлов не в репозитории git:git diff --no-index a.txt b.txtиспользуя пару файлов с примерно 200k строками имен файлов в каждом, я сравнивал (со встроенным
timecommand) этот подход против некоторых других ответов здесь:git diff --no-index a.txt b.txt # ~1.2s comm -23 <(sort a.txt) <(sort b.txt) # ~0.2s diff a.txt b.txt # ~2.6s sdiff a.txt b.txt # ~2.7s vimdiff a.txt b.txt # ~3.2s
commкажется, самый быстрый на сегодняшний день, в то время какgit diff --no-indexкажется, самый быстрый подход для diff-стиля выход.
обновление 2018-03-25 вы можете на самом деле опустить
--no-indexфлаг, если вы не находитесь внутри репозитория git и хотите сравнить неотслеженные файлы в этом репозитории. От man pages:эта форма предназначена для сравнения заданных двух путей в файловой системе. Вы можете опустить параметр --no-index при выполнении команды в рабочем дереве, управляемом Git, и по крайней мере один из путей указывает вне рабочего дерева, или при выполнении команды вне рабочего дерева, управляемого Git.
вы также можете использовать: colordiff: отображение вывода diff с цветами.
о vimdiff: Он позволяет сравнивать файлы через SSH, например:
vimdiff /var/log/secure scp://192.168.1.25/var/log/secureизвлечено из: http://www.sysadmit.com/2016/05/linux-diferencias-entre-dos-archivos.html
использовать
comm -13(требуется отсортировать файлы):$ cat file1 one two three $ cat file2 one two three four $ comm -13 <(sort file1) <(sort file2) four
кроме того, не забываем о mcdiff - внутренний просмотрщик различий GNU Midnight Commander.
например:
mcdiff file1 file2наслаждайтесь!
вот мое решение для этого :
mkdir temp mkdir results cp /usr/share/dict/american-english ~/temp/american-english-dictionary cp /usr/share/dict/british-english ~/temp/british-english-dictionary cat ~/temp/american-english-dictionary | wc -l > ~/results/count-american-english-dictionary cat ~/temp/british-english-dictionary | wc -l > ~/results/count-british-english-dictionary grep -Fxf ~/temp/american-english-dictionary ~/temp/british-english-dictionary > ~/results/common-english grep -Fxvf ~/results/common-english ~/temp/american-english-dictionary > ~/results/unique-american-english grep -Fxvf ~/results/common-english ~/temp/british-english-dictionary > ~/results/unique-british-english

Comments