コマンドの「見えない」出力をファイルに保存する

コマンドの「見えない」出力をファイルに保存する

実行するたびに何かを返すプログラムがあります。これらのコンテンツの一部は、以前の実行中に表示された可能性があります。

foo
bar
baz

次の実行では、2つの「前行」と1つの「新しい行」が表示されることがあります。

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

関連情報