tail -f a/b/c.log d/e/f.log
次のログを記録します。
==> a/b/c.log <==
xxx
yyy
Exception happened 1
zzz
==> d/e/f.log <==
rrr
Exception happened 2
sss
次のように「Exception」を含む行を選択するようにコマンドを変更するにはどうすればよいですか?
a/b/c.log: Exception happened 1
d/e/f.log: Exception happened 2
このソリューションでは、すべてのLinuxコマンドを使用できます。
答え1
お持ちの場合multitail
インストールしたら、それを使用して-E
特定の正規表現に一致する行のみを選択し、その行の--label
前にファイル名を付けることができます。たとえば(-N 0
必要に応じて調整):
multitail --follow-all -N 0 --mergeall -E 'Exception' \
--label 'a/b/c.log: ' a/b/c.log --label 'd/e/f.log: ' d/e/f.log
アクセスできない場合は、multitail
各ファイルで作業し、次のtail -f
ツールを使用して出力を後処理できますgrep
。sed
awk
tail -f a/b/c.log | sed '/Exception/!d;s|^|/a/b/c.log: |' &
tail -f d/e/f.log | sed '/Exception/!d;s|^|/d/e/f.log: |'
または
tail -f a/b/c.log | awk '/Exception/{print "a/b/c.log: " $0}' &
tail -f d/e/f.log | awk '/Exception/{print "d/e/f.log: " $0}'