多くのログファイルからいくつかのIDを取得するためにシェルでgrepを実行します。
grep "100200300" my.log*
結果は次のとおりです。
my.log:Jan 17 15:04:52 100200300 ok
my.log.1:Jan 17 14:35:17 100200300 failed
今、出力からファイル名を削除したいと思います。それでは、「:」が最初に表示されたときにこのテキストを分割して2番目の部分を出力するにはどうすればよいですか?
ベストアンサー1
Steeldriverが述べたように、好ましい方法は-h
(--no-filename
)オプションを使用することです。実装にgrep
このオプションが含まれていない場合は、出力を使用またはsed
変更cut
できます。
grep [OPTIONS] PATTERN [FILE...] | sed 's/[^:]*://'
grep [OPTIONS] PATTERN [FILE...] | cut -d : -f 2-
ただし、この回避策はコロン()を含むファイル名を破損するため、普遍的ではありません:
。