LINUX.ORG.RU

Подскажите утилиту для сравнения строк буква-в-букву

 


0

1

diff сравнивает строки, не показывая различия между ними, а мне надо чтобы показал, какие новые буквы появились и какие были заменены

★★★★★

Последнее исправление: hobbit (всего исправлений: 1)
Ответ на: комментарий от LimpTeaM

vimdiff на строках только подсвечивает от первого и до последнего изменения. Если несколько слов в разных местах строки изменено, то и непонятно.

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

mcdiff

вообще жир - даже не знал о таком хотя более 10-и лет mc пользуюсь и если надо было что то сравнить в mc сравнивал, но просто два файла рядом открывал - фактически то же самое, только без подсветки… век живи - век учись, за наводку - спасибо, обязательно впредь только так буду пользоваться.

amd_amd ★★★★★
()

Команда diff в Unix-подобных системах предназначена для сравнения файлов построчно, а не посимвольно. Если вам нужно увидеть различия между строками на уровне символов (например, какие буквы были добавлены или заменены), вам потребуется использовать другие инструменты или подходы.

Вот несколько способов, как можно достичь этого:

1. Использование wdiff

wdiff — это утилита, которая показывает различия между файлами на уровне слов или символов. Она выделяет добавленные, удаленные и измененные части текста.

wdiff file1.txt file2.txt

Пример вывода:

This is [-old-] {+new+} text.

2. Использование git diff --word-diff

Если вы работаете с Git, можно использовать встроенную функцию –word-diff, которая покажет различия на уровне слов или символов.

git diff --word-diff=color --no-index file1.txt file2.txt

Пример вывода:

This is {+new+} text.

3. Использование diff с --color и --side-by-side

Если вы хотите использовать diff, но с более наглядным выводом, можно включить подсветку и сравнение в две колонки:

diff --color=always -y file1.txt file2.txt

Пример вывода:

This is old text.      |  This is new text.

4. Использование cmp и xxd

Если вам нужно сравнить файлы побайтово, можно использовать cmp вместе с xxd:

cmp -l file1.txt file2.txt | xxd

Это покажет различия в байтах, но не в символах.

5. Использование Python или другого скриптового языка

Если вам нужно более гибкое решение, можно написать скрипт на Python, который покажет различия на уровне символов:

from difflib import ndiff

def compare_files(file1, file2):
    with open(file1, 'r') as f1, open(file2, 'r') as f2:
        diff = ndiff(f1.readlines(), f2.readlines())
        print(''.join(diff))

compare_files('file1.txt', 'file2.txt')

Пример вывода:

  This is old text.
+ This is new text.

6. Использование vimdiff

Если вы работаете в терминале, можно использовать vimdiff, который покажет различия между файлами в интерактивном режиме:

vimdiff file1.txt file2.txt

Этот инструмент выделит изменения на уровне символов.

Заключение

Если вам нужно сравнить строки на уровне символов, wdiff, git diff --word-diff или скрипт на Python будут наиболее подходящими инструментами. Выберите тот, который лучше всего соответствует вашим потребностям.

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

бесполезны чуть более чем полностью скоро станут луддиты, которые не пользуются нейронками «потому что потому» и бегут задавать вопросы на ЛОР, тратя свое и чужое время.

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

–word-diff-regex=.

Вот это реально круто. Именно так регулярные выражения и нужно использовать. Можно диффы по предложениям или параграфам строить.

Зачем? Сложно сказать. Ну, например, чтобы получить полный контекст вокруг одного расхождения.

kaldeon
()
Последнее исправление: kaldeon (всего исправлений: 1)