示されているように例外が含まれているログファイルがあるとしましょう
Java.lang.NullPointerException blabla
ABC.Exception blalabbla
dogchacecat.Exception yadayada
各行の先頭から「例外」まで(含む)まで出力できるようにしたい
望ましい出力:
Java.lang.NullPointerException
ABC.Exception
dogchacecat.Exception
GNUツール(grep、awk、sed))を使用してこれを行うにはどうすればよいですか?ありがとうございます!
grep
の使用:
grep -o '.*Exception' file
-o、--only-matching
行の一致する部分のみを印刷します。
'.*Exception'
これは、単語「例外」まで、0と任意の文字(行末記号を除く)の無制限の出現の間で一致します。
コメントで述べた動作(Exception
の前の文字列を先頭の空白文字までプルする)を取得するには、拡張正規表現またはPerl正規表現を使用して\S
制御文字(非-空白文字):
grep -oE '\S+Exception' file
POSIXユーティリティを使用する場合(GNUおよび非GNU実装で機能する):
firstまでのすべての行でのException
の出現:
sed -n 's/\(Exception\).*/\1/p'
last発生までのすべて:
sed -n 's/\(.*Exception\).*/\1/p'
p
を含まない行を保持する(変更しない)場合は、-n
およびException
を削除します。
あなたの お気に入りの標準エディタ、ed :
ed -s input <<< $'1,$s/Exception.*/Exception/\nw\nq'
これにより、入力ファイルinput
が、コマンドのhere-stringリストで編集されます。
1,$
-ファイルのすべての行(1から最後まで$
)、s/Exception.*/Exception/
-文字列 "Exception"を検索し、その後に何でも続く(.*
)「例外」という単語のみw
-ファイルをディスクに書き戻しますq
-終了しました