区切り文字が最初に表示されたときの文字列の分割

区切り文字が最初に表示されたときの文字列の分割

多くのログファイルからいくつかの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-

ただし、この回避策はコロン()を含むファイル名を破損するため、普遍的ではありません:

おすすめ記事