test.log
引き続き追加されるmore行というファイルがあるとします。
one|two|apple|four|foo1
one|two|pear|four|foo2
one|two|apple|four|foo3
one|two|peach|four|foo4
私はそれを追跡したいのですが、りんごの行だけに興味があり、最後のパイプの後の文字列だけを見たいです。
リンゴでフィルタリングするには、次のものを使用できます。
tail -f test.log | grep apple
この出力は次のようになります。
one|two|apple|four|foo1
one|two|apple|four|foo3
ここで、最後のパイプの後に文字列を取得するには、次のものを使用できると思います。
tail -f test.log | grep apple | awk -F '|' '{print $(NF)}'
しかし、これは何も出力しません。
tailからオプションを削除すると-f
機能しますが、ログファイルは表示されません。
問題はawkが中断されることです。この回答で説明されているように。そこに説明されているソリューションが私に合うようにすることはできません。
したがって、カットを使用することはawkよりも簡単かもしれません。特定の数のパイプがあるので、次のようにすることができます。
cat test.log | grep apple | cut -d\| -f 5
出力:
foo1
foo3
しかし、私が見るとき:
tail -f test.log | grep apple | cut -d\| -f5
今回も何の結果も出ません。
このファイルを追跡、フィルタリングし、最後のビットを抽出するために使用できるライナーはありますか?