2013-06-05 123 views
0

我必須使用grep命令僅查找並打印文件中某行的匹配字符串。如何使用grep命令匹配多行字符串

下面是示例文本:

04-06-2013 INFO blah blah blah blah Param : 39 another text Ending the line. 
05-06-2013 INFO blah blah allah line 2 ending here with Param : 21. 

欲被打印輸出如下面grep命令後

04-06-2013 INFO Param : 39 
04-06-2013 INFO Param : 21 

我試圖與-o選項和正則表達式'.*INFO' grep命令。我成功地在不同的grep命令中分別打印兩個文本,因爲我希望在單個命令中使用它。

在此先感謝。

+0

您需要的最簡單的grep函數是grep -o「。* INFO \ | Param:[0-9] *」 – Rinku

回答

1

我不確定你可以用純grep來做到這一點,因爲你需要能夠用分組術語指定正則表達式,然後只打印出某些正則表達式組而不是整個正則表達式匹配的所有東西 - 所以你會例如指定(.*INFO)(.*)(Param : [0-9]*)作爲正則表達式,然後僅打印組13(假設您從1開始計數)。

但是,您可以使用sed進行後處理輸出爲您提供:

% cat foo 
04-06-2013 INFO blah blah blah blah Param : 39 another text Ending the line. 
05-06-2013 INFO blah blah allah line 2 ending here with Param : 21. 
% grep 'Param :' foo | sed 's/\(.*INFO\)\(.*\)\(Param : [0-9]*\)\(.*\)/\1 \3/' 
04-06-2013 INFO Param : 39 
05-06-2013 INFO Param : 21 

什麼我上面做的是隻用團體13,用空格隔開更換了比賽。

我認爲this question是相關的(甚至可能是重複的)。

1
grep -o ".*INFO\|Param : [0-9]*" 
相關問題