2種類のステートメントを含むログファイルがあります。
それを言う一つの方法は次のとおりです。
LOG:Update For User 12932030 statement @2113 set startduration='2017-01-03 00:01:30'...
LOG:Update For User 12932030 statement @2033 set startduration=endduration ...
LOG:Update For User 12932031 statement @2403 set startduration='2017-01-04 00:02:30'...
LOG:Update For User 12932032 statement @3113 set startduration='2017-01-09 00:03:30'...
LOG:Update For User 12932033 statement @9313 set startduration=endduration ...
LOG:Update For User 12932034 statement @9126 set startduration=endduration ...
だからここから2つを別々に抽出したいと思います。しかし、私の現在のアプローチは次のとおりです。
grep -i " LOG:Update For User set startduration" log.csv > result.csv
2つの間に違いはありません。開始期間後にパターンをマージする方法がわかりません。助けてくれてありがとう。
答え1
これを2回試してくださいgrep
:
希望の出力タイプ1:
grep -E "LOG:Update For User [0-9]* statement *@[0-9]* set startduration='" log.csv
LOG:Update For User 12932030 statement @2113 set startduration='2017-01-03 00:01:30'...
LOG:Update For User 12932031 statement @2403 set startduration='2017-01-04 00:02:30'...
LOG:Update For User 12932032 statement @3113 set startduration='2017-01-09 00:03:30'...
希望の出力タイプ2:
grep -E "LOG:Update For User [0-9]* statement *@[0-9]* set startduration=[^']" log.csv
LOG:Update For User 12932030 statement @2033 set startduration=endduration ...
LOG:Update For User 12932033 statement @9313 set startduration=endduration ...
LOG:Update For User 12932034 statement @9126 set startduration=endduration ...