Назад | Перейти на главную страницу

Показывать только то, что нового в файле

Я хочу узнать, что было добавлено в файл журнала между двумя задачами. Прямо сейчас, как я это делаю:

содержание test.log изначально

aaa
bbb

сохранение содержимого журнала

$ cp test.log test.log.before

делать что-то

содержимое test.log после чего-либо

aaa
bbb
ccc

сохранение содержимого журнала

$ cp test.log test.log.after

показывая разницу

$ diff test.log.before test.log.after
2a3
> ccc

Что мне не нравится в этом методе, так это то, что я слышу шум от diff (2a3 и >) а я просто хочу ccc.

В: Есть ли способ просто узнать разницу между двумя файлами журнала (т.е. что нового в test.log.after, ccc)?

Я смотрел на страница руководства diff но я не вижу там ничего очевидного.

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

$ cat before 
aaa
bbb

$ cat after
aaa
bbb
ccc

$ comm -3  after before
ccc

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

$ diff test.log.before test.log.after | grep "^>" | cut -c 3-

Однако вы потеряете удаления, если таковые имеются.