2

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

Поскольку файлы журналов имеют определенный формат, я могу просто исключить последние ~ 40 символов из каждой строки, чтобы игнорировать метки времени. EX:

Строка А:

[T9] | ENTRY NAME                       varA             = 0000012B  varB             = 00000000 | 000015.508.107.113s | file.cpp              :738

Строка B:

[T9] | ENTRY NAME                       varA             = 0000012B  varB             = 00000000 | 000015.508.107.163s | file.cpp              :738

Эти строки должны рассматриваться как идентичные в моем случае.

Как я могу указать diff, чтобы он включал только первые n символов из каждой строки или исключал последние m символов из каждой строки?

1 ответ1

6

В bash вы можете использовать процесс подстановки.

Чтобы удалить последние 40 символов, вы можете использовать

diff <(sed 's/.\{40\}$//' file1) \
     <(sed 's/.\{40\}$//' file1)

Чтобы выбрать первые 40, вы можете использовать

cut -c1-40 file

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .