Diff только для одного персонажа - PullRequest
0 голосов
/ 10 июля 2019

Я новичок в Ubuntu и кодировании. У меня проблема, потому что у меня есть два файла, которые содержат почти идентичные слова. Они отличаются только одним персонажем (я надеюсь). Мои входные данные - это файлы, подобные этим

Файл 1:

AEEL00123-RA
AEEL00123-RB
AEEL00125-RA
(...)

Файл 2:

AEEL00123-PA
AEEL00123-PB
AEEL00125-PA
(...)

Мне нужен вывод, показывающий ТОЛЬКО Ps или Rs, потому что позже я собираюсь подсчитать эти различия, и мои файлы имеют 29000 строк в каждой. Мне нужно подтвердить, что есть 29000 различий и что они ТОЛЬКО буква P или R

Я ожидаю, что результат будет таким:

P
P
P
P

Потому что тогда я бы посчитал это с помощью wc -l или чего-то подобного.

1 Ответ

1 голос
/ 11 июля 2019
cmp -l file1 file2 |\
awk '
    { count++ }
    !/( 12[02]){2}$/ { print "bogus change at position", $1 }
    END { print count, "total changes" }
'
  • cmp -l сравнивает два файла и выводит любые байтовые различия
  • сценарий awk подсчитывает изменения и печатает итог;он также печатает сообщение о любых изменениях, которые не P (120) или R (122)

Обратите внимание, что если два файла содержат какие-либоСтрока с неравной длиной (т. е. вставка или удаление, а не подстановка), вы получите очень подробный вывод, так как изменение выравнивания приведет к тому, что почти каждый последующий байт станет несоответствующим.

...