- 9 лучших инструментов для сравнения и сравнения файлов (Diff) для Linux
- 1. Команда сравнения
- команда colordiff
- команда wdiff
- 2. Команда Вимдифф
- 3. Сравнить
- 4. Слияние различий
- 5. Объединение — инструмент сравнения
- 6. Diffuse — инструмент сравнения с графическим интерфейсом
- 7. XXdiff — инструмент сравнения и слияния
- 8. KDiff3 — — Инструмент сравнения и слияния
- 9. ТкДифф
- Comparing two files in linux terminal
- 12 Answers 12
9 лучших инструментов для сравнения и сравнения файлов (Diff) для Linux
При написании программных файлов или обычных текстовых файлов программисты и писатели иногда хотят знать разницу между двумя файлами или двумя версиями одного и того же файла. Когда вы сравниваете два компьютерных файла в Linux, разница между их содержимым называется diff. Это описание было создано из ссылки на вывод diff, хорошо известной утилиты сравнения файлов командной строки Unix.
Существует несколько инструментов сравнения файлов, которые вы можете использовать в Linux, и в этом обзоре мы рассмотрим некоторые из лучших инструментов сравнения на основе терминала и графического интерфейса, которыми вы можете воспользоваться при написании кода или других текстовых файлов.
1. Команда сравнения
Мне нравится начинать с оригинального инструмента командной строки Unix, который показывает разницу между двумя компьютерными файлами. Diff прост и удобен в использовании, он предустановлен в большинстве дистрибутивов Linux. Он сравнивает файлы построчно и выводит разницу между ними.
Вы можете проверить ручную запись для diff, чтобы легко ее использовать.
Для инструмента diff есть несколько оболочек, расширяющих его функциональность, в том числе:
команда colordiff
Colordiff — это Perl-скрипт, который выдает тот же результат, что и diff, но с подсветкой цвета и синтаксиса. Имеет настраиваемые цветовые схемы.
Вы можете установить Colordiff в своих системах Linux, используя инструменты менеджера пакетов по умолчанию, называемые apt-get, как показано ниже.
# yum install colordiff [On CentOS/RHEL/Fedora] # dnf install colordiff [On Fedora 23+ version] $ sudo apt-get install colordiff [On Debian/Ubuntu/Mint]
Вы можете проверить ввод вручную для Colordiff, как показано.
команда wdiff
Утилита wdiff — это внешний интерфейс для команды diff, используемой для пословного сравнения файлов. Эта программа очень удобна при сравнении двух текстов на предмет измененных слов и на наличие перезаполненных абзацев.
Чтобы установить wdiff в ваших системах Linux, запустите:
# yum install wdiff [On CentOS/RHEL/Fedora] # dnf install wdiff [On Fedora 23+ version] $ sudo apt-get install wdiff [On Debian/Ubuntu/Mint]
Используйте руководство wdiff, чтобы узнать, как использовать его в Linux.
2. Команда Вимдифф
Vimdiff работает более продвинуто по сравнению с утилитой diff. Это позволяет пользователю редактировать до четырех версий файла, показывая их различия. При запуске Vimdiff открывает два, три или четыре файла с помощью текстового редактора vim.
Посетите домашнюю страницу: http://vimdoc.sourceforge.net/htmldoc/diff.html
Рассмотрев инструменты diff старой школы, давайте быстро перейдем к некоторым инструментам GUI diff, доступным в Linux.
3. Сравнить
Kimpare – это оболочка diff GUI, которая позволяет пользователям просматривать различия между файлами, а также объединять их.
Некоторые из его особенностей включают в себя:
- Поддерживает несколько форматов сравнения
- Поддерживает сравнение каталогов
- Поддерживает чтение файлов различий.
- Настраиваемый интерфейс
- Создание и применение исправлений к исходным файлам
Посетите домашнюю страницу: https://www.kde.org/applications/development/kompare/
4. Слияние различий
DiffMerge – это кроссплатформенное приложение с графическим интерфейсом для сравнения и объединения файлов. Он имеет два функциональных механизма: механизм Diff, который показывает разницу между двумя файлами, который поддерживает внутристрочное выделение и редактирование, и механизм слияния, который выводит измененные строки между тремя файлами.
Он имеет следующие особенности:
- Поддерживает сравнение каталогов
- Интеграция с файловым браузером
- Широко настраиваемый
Посетите домашнюю страницу: https://sourcegear.com/diffmerge/
5. Объединение — инструмент сравнения
Meld – это легкий инструмент сравнения и объединения с графическим интерфейсом. Это позволяет пользователям сравнивать файлы, каталоги и программы с контролем версий. Созданный специально для разработчиков, он обладает следующими функциями:
- Двустороннее и трехстороннее сравнение файлов и каталогов
- Обновление сравнения файлов по мере того, как пользователи вводят больше слов
- Облегчает слияние благодаря режиму автоматического слияния и действиям с измененными блоками.
- Простое сравнение с помощью визуализаций.
- Поддерживает Git, Mercurial, Subversion, Bazaar и многое другое
Посетите домашнюю страницу: http://meldmerge.org/
6. Diffuse — инструмент сравнения с графическим интерфейсом
Diffuse — еще один популярный, бесплатный, небольшой и простой инструмент сравнения и слияния с графическим интерфейсом, который можно использовать в Linux. Написанный на Python, он предлагает две основные функции, а именно: сравнение файлов и контроль версий, позволяя редактировать файлы, объединять файлы, а также выводить разницу между файлами.
Вы можете просмотреть сводку сравнения, выбрать строки текста в файлах с помощью указателя мыши, сопоставить строки в соседних файлах и отредактировать другой файл. Другие функции включают в себя:
- Подсветка синтаксиса
- Сочетания клавиш для удобной навигации
- Поддерживает неограниченную отмену.
- Поддержка Юникода
- Поддерживает Git, CVS, Darcs, Mercurial, RCS, Subversion, SVK и Monotone.
Посетите домашнюю страницу: http://diffuse.sourceforge.net/
7. XXdiff — инструмент сравнения и слияния
XXdiff – это бесплатный мощный инструмент для сравнения и слияния файлов и каталогов, который работает в таких операционных системах, как Unix, таких как Linux, Solaris, HP/UX, IRIX, DEC Tru64. Одним из ограничений XXdiff является отсутствие поддержки файлов Unicode и встроенного редактирования файлов diff.
Он имеет следующий список возможностей:
- Поверхностное и рекурсивное сравнение двух, трех файлов или двух каталогов
- Горизонтальное выделение разницы
- Интерактивное объединение файлов и сохранение результатов
- Поддерживает проверку слияния и контроль за соблюдением правил.
- Поддерживает внешние инструменты сравнения, такие как GNU diff, SIG diff, Cleareddiff и многие другие.
- Расширяется с помощью скриптов
- Полностью настраиваемый с помощью файла ресурсов, а также многие другие второстепенные функции.
Посетите домашнюю страницу: http://furius.ca/xxdiff/
8. KDiff3 — — Инструмент сравнения и слияния
KDiff3 — еще один классный кроссплатформенный инструмент для сравнения и слияния, созданный на основе KDevelop. Он работает на всех Unix-подобных платформах, включая Linux и Mac OS X, Windows.
Он может сравнивать или объединять от двух до трех файлов или каталогов и имеет следующие примечательные особенности:
- Указывает на различия построчно и посимвольно.
- Поддерживает автоматическое объединение
- Встроенный редактор для разрешения конфликтов слияния.
- Поддерживает Unicode, UTF-8 и многие другие кодеки
- Позволяет печатать различия
- Поддержка интеграции проводника Windows
- Также поддерживается автоматическое определение с помощью метки порядка байтов BOM
- Поддерживает выравнивание строк вручную.
- Интуитивно понятный графический интерфейс и многое другое
Посетите домашнюю страницу: http://kdiff3.sourceforge.net/
9. ТкДифф
TkDiff также является кросс-платформенной, простой в использовании оболочкой с графическим интерфейсом для инструмента сравнения Unix. Он обеспечивает параллельное представление различий между двумя входными файлами. Он может работать на Linux, Windows и Mac OS X.
Кроме того, он имеет некоторые другие интересные функции, включая закладки различий, графическую карту различий для простой и быстрой навигации и многое другое.
Посетите домашнюю страницу: https://sourceforge.net/projects/tkdiff/
Прочитав этот обзор некоторых из лучших инструментов для сравнения и слияния файлов и каталогов, вы, вероятно, захотите попробовать некоторые из них. Возможно, это не единственные инструменты сравнения, которые вы можете найти в Linux, но они, как известно, предлагают некоторые лучшие функции. Вы также можете сообщить нам о любых других инструментах сравнения, которые вы тестировали и которые, по вашему мнению, заслуживают внимания. упоминается в числе лучших.
Comparing two files in linux terminal
There are two files called «a.txt» and «b.txt» both have a list of words. Now I want to check which words are extra in «a.txt» and are not in «b.txt». I need a efficient algorithm as I need to compare two dictionaries.
12 Answers 12
if you have vim installed,try this:
you will find it fantastic.
comm compares (sorted) input files and by default outputs three columns: lines that are unique to a, lines that are unique to b, and lines that are present in both. By specifying -1 , -2 and/or -3 you can suppress the corresponding output. Therefore comm -23 a b lists only the entries that are unique to a. I use the <(. ) syntax to sort the files on the fly, if they are already sorted you don't need this.
@AliImran, comm is more efficient because it does the job in a single run, without storing the entire file in memory. Since you’re using dictionaries that are most likely already sorted you don’t even need to sort them. Using grep -f file1 file2 on the other hand will load the entire file1 into memory and compare each line in file2 with all of those entries, which is much less efficient. It’s mostly useful for small, unsorted -f file1 .
Thanks @AndersJohansson for sharing the «comm» command. Its nifty indeed. I frequently have to do outer joins between files and this does the trick.
If you prefer the diff output style from git diff , you can use it with the —no-index flag to compare files not in a git repository:
git diff --no-index a.txt b.txt
Using a couple of files with around 200k file name strings in each, I benchmarked (with the built-in time command) this approach vs some of the other answers here:
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 seems to be the fastest by far, while git diff --no-index appears to be the fastest approach for diff-style output.
Update 2018-03-25 You can actually omit the --no-index flag unless you are inside a git repository and want to compare untracked files within that repository. From the man pages:
This form is to compare the given two paths on the filesystem. You can omit the --no-index option when running the command in a working tree controlled by Git and at least one of the paths points outside the working tree, or when running the command outside a working tree controlled by Git.