文字列の追跡と観察、フィルタリング、抽出

文字列の追跡と観察、フィルタリング、抽出

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

今回も何の結果も出ません。

このファイルを追跡、フィルタリングし、最後のビットを抽出するために使用できるライナーはありますか?

ベストアンサー1

おすすめ記事