LINUX.ORG.RU

Посимвольный diff текстовых файлов.


0

1

diff сравнивает строки:

--text Считать все файлы текстовыми и сверять их построчно, даже если они не выглядят, как текстовые.
cmd также не подходит:
cmp - compare two files byte by byte
$ cmp new.txt orig.txt 
new.txt orig.txt различаются: байт 1229, строка 40

Какую утилиту использовать для сравнения текстовых файлов по-символьно? (с эвристиками как в diff)

★★★★★

Вы хотите увидеть все различающиеся в файлах символы и только их? Какие эвристики diff вы имеете ввиду?

ilias
()
Ответ на: комментарий от ilias

> Вы хотите увидеть все различающиеся в файлах символы и только их?

Или увидеть, или подсчитать кол-во различающихся символов в двух текстах.
Один текст - оригинал на русском, другой - частично переведенный этот текст на английский.

Какие эвристики diff вы имеете ввиду?


Построение минимального patch'а.

pacify ★★★★★
() автор топика

Это не подойдет? Это простенький diff, сравнивающий (правда, построчно) два файла и выдающий строки одного файла, присутствующие в другом, или отсутствующие там.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

> ... и выдающий строки одного файла, присутствующие в другом, или отсутствующие там.

Нет. Нужно именно символы (подстроки).
Например, чтобы подсвечивало in vertical splitted window символы (подстроки), которые изменены.

pacify ★★★★★
() автор топика
Ответ на: комментарий от pacify

Так это же совсем жестоко будет: надо будет либо вводить ограничение, чтобы все изменения шли строго по порядку (чего обычно не бывает), либо долго ждать, пока программа итерация за итерацией обнаружит изменения по словам (но и в этом случае сравнение не будет посимвольным).

Посимвольное сравнение очень больших файлов, ИМХО, затея ужасная. Думаю, полдня будете ждать, пока эта программка вам пару несчастных файликов на несколько сотен килобайт проверит...

Eddy_Em ☆☆☆☆☆
()

Как вариант, можно использовать вывод diff, поверх которого добавить свой сравниватель строк (в синтаксисе того же patch). diff trac-а подсвечивает не только добавленные и удаленные строки, но и разницу в этих конкретных строках, например: http://trac.edgewall.org/wiki/Ubuntu-11.04-Subversion?action=diff&version=15

ilias
()
Ответ на: комментарий от ilias

> Как вариант, можно использовать вывод diff, поверх которого добавить свой сравниватель строк ...

Да, наверное это - оптимальный способ.

pacify ★★★★★
() автор топика

Взгляните на wdiff, vbindiff, xdelta, xdelta3.

Ну и про ediff в emacs не забываем ;)

Slimer
()

Я использую Википедию. Вставляю туда последовательно два файла и смотрю различие.

Nxx ★★★★★
()
Ответ на: комментарий от Nxx

Так грязно википедию, пожалуй, еще никто не использовал...

ilias
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.