version.txtというログファイルがあり、キーワードを含むすべての単語をフィルタリングする必要があります(time=
。出力は(time=451)
次のようになります。
以下は、ログファイルのサンプルエントリです。私がリストしたい項目を強調表示します。切り取りまたは切り捨てると、単語の代わりに行全体が印刷されます(time=
。
(time=
数字を含む単語から最後まで単語をリストするコマンドを提案してください)
。
2020-03-10 06:48:20 [http-nio-7001-exec-7] INFO [5e6770737be8a35b5fef38f7be2a2635] [5fef38f7be2a2635] [] c.l.e.i.a.c.ItemAvailabilityControllerImpl - DeliveryMethod(sosItmNbr=null, fullMtdTyp=3, fullMtdMsg=Delivery, fullCarrier=null, fullCarrierSvc=null, fullTransitMode=null, fullLctNbr=0, restMsg=null, isAvlSts=false, reqStates=[], onhandQty=0, totalQty=0, itmLdTmAvlQty=0, itmLdTm=null, itmConsolidationDate=null, itmLdTmDays=null, itmLdTmDaysLow=null, fullPath=null)])]) (time=451)
2020-03-10 06:48:20 [http-nio-7001-exec-28] INFO [5e677073e64bd99b5997b5bd20c3c4e0] [5997b5bd20c3c4e0] [] c.l.e.i.a.c.ItemAvailabilityControllerImpl - Finished availability process; Response: IAResponse(locationItemData=[ResponseItem(lctNbr=6877, itemNbr=10000070, modID=1500040, omniID=null, vbuNbr=14692, itmTypCode=3, reqQty=17, itemAvailList=[DeliveryMethod(sosItmNbr=null, fullMtdTyp=1, fullMtdMsg=Parcel, fullCarrier=null, fullCarrierSvc=null, fullTransitMode=null, fullLctNbr=0, restMsg=null, isAvlSts=false, reqStates=[], onhandQty=0, totalQty=0, itmLdTmAvlQty=0, itmLdTm=null, itmConsolidationDate=null,(time=455)
2020-03-10 06:48:20 [http-nio-7001-exec-46] INFO [5e6770731c4e323f4cb875712bb0d8ee] [4cb875712bb0d8ee] [] c.l.e.i.a.c.ItemAvailabilityControllerImpl - Finised (time=492)
このサンプル入力の出力は次のようになります。
(time=451)
(time=455)
(time=492)
答え1
問題は完全にはっきりしていません。
注文する
grep -o '(time=[[:digit:]]*)' inputfile
問題印刷のサンプル入力
(time=451)
(time=455)
(time=492)
コメントで追加要件をカバーするように編集されました。
行の先頭の出力に日付と時刻のフィールドを追加するには、別のコマンドが必要です。
入力のすべての行に(time=...)
日付と時刻のフィールドが含まれていて、単一の空白文字で区切られた日付と時刻のフィールドで始まる場合は、次のものを使用できます。
sed 's/^\([-0-9]* [:0-9]* \).*\((time=[[:digit:]]*)\).*/\1\2/' inputfile
この印刷
2020-03-10 06:48:20 (time=451)
2020-03-10 06:48:20 (time=455)
2020-03-10 06:48:20 (time=492)
一致しない他の行がある場合は、上記とgrep
同じパターンで結合できますが、省略できます-o
。
grep '(time=[[:digit:]]*)' inputfile | sed 's/^\([-0-9]* [:0-9]* \).*\((time=[[:digit:]]*)\).*/\1\2/'
私のコマンドの検索パターンはsed
それほど厳格ではありません。
この部分は、ランダム[-0-9]* [:0-9]*
な数字とダッシュ(日付)、スペース、ランダムな数字とコロン(時間)、スペースの組み合わせと一致します。パターンは前のパターンを介して行の先頭に固定されます^
。
---123--456- 9876:54321
したがって、行の先頭にある2つのスペースなど、無効な日付と時刻のフィールドとも一致します。