我有一个程序,每次运行时都会返回一些内容。其中一些内容可能在上次运行期间已经显示。
foo
bar
baz
在下一次执行时,它可能会显示两条“旧行”和一条“新行”:
bar
baz
house
是否可以过滤掉这些命令中以前未见过的内容并将其保存到文件中,以便我最终得到
foo
bar
baz
house
请注意,我非常不规律地运行此命令,因此两次执行之间可能有几分钟到几天的时间。
答案1
如果您已从包sponge
中moreutils
安装:
$ printf '%s\n' foo bar baz > log # first call
$ printf '%s\n' bar baz house | grep -v -F -x -f log | sponge -a log # subsequent calls
$ cat log
foo
bar
baz
house