Показывать только что нового в файле
Я хочу узнать, что было добавлено в файл журнала между 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