複数行から情報を収集する方法は?

複数行から情報を収集する方法は?

次のデータを含むログファイルがあります。

2019-02-11 00:05:58.241 [exec-178] Start request
2019-02-11 00:05:58.242 [exec-178] customer_name
2019-02-11 00:05:58.243 [exec-178] other process
2019-02-11 00:05:58.244 [exec-178] other process
2019-02-11 00:05:58.245 [exec-178] results
2019-02-11 00:05:58.246 [exec-178] End request (13ms)

単一のgrepコマンドを使用して「customer_name」と「End request」をキャプチャしたいと思います。使用しようとしましたが、grep -E "[0-9]{2,4}ms期待した結果は出ません。

予想出力:

2019-02-11 00:05:58.242 [exec-178] customer_name 
2019-02-11 00:05:58.246 [exec-178] End request (13ms)

ベストアンサー1

grepを使用してgrep -E見つけることができるパターンは、パイプ記号で区切られています。

[root@server ~]# grep -Ei "customer_name|end request" file 
2019-02-11 00:05:58.242 [exec-178] customer_name
2019-02-11 00:05:58.246 [exec-178] End request (13ms)
[root@server ~]# 

抜粋man grep:

-E、--extended-regexp PATTERNを拡張正規表現(ERE、以下を参照)として解釈します。

-i、--ignore-case PATTERNと入力ファイルの大文字と小文字の違いを無視します。

おすすめ記事