Как найти различия в словах в файлах с очень большими строками

Мой вопрос: есть ли в Linux инструмент для поиска разницы в двух файлах со строками размером в 39604 символа.

Я пробовал использовать vimdiff, kompare, diff, colordiff, wdiff и другие инструменты, и ни один из них не показал мне точной разницы.

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

Но я хотел бы знать, есть ли более быстрый способ сравнить этот или аналогичный случай.

Заранее спасибо.


person oml    schedule 05.05.2020    source источник


Ответы (1)


В конце я обнаружил разницу, загрузив два файла с помощью gedit, продвигая обе страницы на страницу и проверяя, есть ли различия. Поскольку я не нашел никакой разницы, я проверил, был ли последний символ пробелом, и это была разница, и я понял !.

Серфинг Я нашел хорошее решение на https://unix.stackexchange.com/questions/45711/diff-reports-two-files-differ-although-they-are-the-same

«Что, если вы сделаете их hexdump? Это может показать различия более явно, например:»

hexdump -C file1 > file1.hex
hexdump -C file2 > file2.hex
diff file1.hex file2.hex
person oml    schedule 05.05.2020
comment
Пища для размышлений, а как насчет того, чтобы разорвать черту на каждом символе и использовать обычную разницу, чтобы выявить различия? Идея разрыва строки: stackoverflow.com/questions/1187078/ - person Rafa; 05.05.2020
comment
Вы также можете использовать tr, чтобы превратить все пробелы или любой другой символ-разделитель в символы новой строки, а затем запустить diff. Должен давать лучшие результаты при вставке / удалении, чем подход hexdump: если у вас есть один символ, отсутствующий в начале одного файла, подход hexdump в основном помечает все, что следует за отсутствующим символом, как разные, с переводом разделителя вы получите только одно слово выделено, где находится разница. - person cmaster - reinstate monica; 05.05.2020
comment
@ cmaster-reinstatemonica Это очень хорошее решение. Большое спасибо! - person oml; 06.05.2020