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

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

содержание 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,

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

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

2 ответа

Решение

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

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

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

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

$ cat before 
aaa
bbb

$ cat after
aaa
bbb
ccc

$ comm -3  after before
ccc
Другие вопросы по тегам