3

ファイル内の行を検索し、検索された行の上下の行を抽出するにはどうすればよいですか?

私の入力は次のようなものです

Tue Jun 26 14:59:46 2012
 Warning ffffffff act_msg_ctms_remove_from_pending_queue: deleting message 44817201 from the queue.
Tue Jun 26 14:59:46 2012
 Warning ffffffff Finishing processing record number 44817201
Tue Jun 26 14:59:46 2012
 Warning  5000000 activity_queue_manager_finish_cb: unknown activity 120.
Tue Jun 26 14:59:46 2012
 Warning ffffffff Activity State Machine priority (2) finished
Tue Jun 26 14:59:46 2012
 Warning ffffffff 
====================================================
Processing database file "INCOMING_MESSAGES" record number 47810234 from user "(unknown)"
Tue Jun 26 14:59:46 2012
 Warning ffffffff ACTIVITY data: rec_num (47810234) size (116) 
Tue Jun 26 14:59:46 2012
 Warning ffffffff activity status: ACT_SENT 
Tue Jun 26 14:59:46 2012
 Warning ffffffff MESSAGE body "MVT
QFA6673/26.VHQOS.BNE
EA0541
"
Tue Jun 26 14:59:46 2012
 Warning ffffffff Finishing processing record number 47810234
Tue Jun 26 14:59:46 2012
 Warning ffffffff Activity State Machine priority (1) finished
Tue Jun 26 14:59:46 2012
 Warning ffffffff 
End processing record number 47810234

================================================== ==

そして、出力が次のようになる必要があります

/

Tue Jun 26 14:59:46 2012
 Warning ffffffff MESSAGE body "MVT
QFA6673/26.VHQOS.BNE
EA0541"

/

私の検索文字列は MVT です。

助けてください

4

2 に答える 2

5

試合前後の三線分

grep -C 3 pattern filename 

一致のために表示される前後の行数をより詳細に制御するには、次を使用します。

grep -A (num of after) -B (num of lines before)  pattern filename

からman grep:

 -A NUM, --after-context=NUM
          Print NUM lines of trailing context after matching lines.  
          Places a line containing -- between contiguous groups of matches.

   -a, --text
          Process a binary file as if it were text; 
          this is equivalent to the --binary-files=text option.

   -B NUM, --before-context=NUM
          Print NUM lines of leading context before matching lines.  
          Places a line containing -- between contiguous groups of matches.

   -C NUM, --context=NUM
          Print NUM lines of output context.  
          Places a line containing -- between contiguous groups of matches.
于 2012-06-26T07:11:26.043 に答える
3

grep には、一致の直前と直後の行を表示するオプションがあります。以下のコマンド ラインの数字は、一致の前後に表示する適切な行数です。例えば

grep -A3 -B5 yoursearchpattern inputfilepattern

オプションの詳細については man grep が便利です。

GNU grep があると仮定して、 --version オプションを使用できることを確認するには:

> grep --version
GNU grep 2.6.3
于 2012-06-26T07:11:08.503 に答える