2013-04-22 93 views
0

我有一個命令輸出如下的一堆行 第一個數字是第二個數字代表關鍵字。 我想能夠解析關鍵字2 3和5 輸入Bash解析特定行命令的分段輸出

11 
12 
13 
14 
15 
\n 
\n 
\n 
21 
22 
23 
24 
25 
\n 
\n 
\n 
(2 more sections as such) 

輸出

12 
13 
15 
\n 
22 
23 
25 
\n 
(continues for other 2 sections) 

grep的給我(等)。 我不太確定如何用awk來完成它。 我的最終目標是將其放入解析部分(或行)的輸出轉到臨時文件的腳本中。

回答

0

AWK與設置RS

awk '{while(++i<=NF)if($i~/[235]$/)print $i;i=0;print ""}' RS="" file 

輸出:

12 
13 
15 

22 
23 
25 

編輯

awk '/^\s*$/{a[NR];if(!(NR-1 in a))print} /[235]$/{print}' file 
+0

所以在這種情況下,它說[235]是我在哪裏設置關鍵值?這將如何工作的文字? – DwarfCode 2013-04-23 21:17:51

+0

那麼你需要給你的文字的匹配標準。只要正則表達式可以匹配您所需的文本,該行就可以工作。 – Kent 2013-04-23 22:20:23

+0

我喜歡這個代碼的問題是,它只打印我正在尋找的不是整行的單詞。有沒有辦法改變這種行爲? – DwarfCode 2013-04-30 16:35:11

0

這裏有一個辦法:

$ awk '$1~/[235]$/{p=1;print}!$1&&p{p=0;print}' file 
12 
13 
15 

22 
23 
25 

到記錄只有一個換行符分隔標誌p時,我們設置p,當我們打印時,在第一塊比賽,當我們到達第一個空白在每條記錄之後行,即!$1我們打印空白行並取消設置標誌,以便忽略接下來的兩行。

+0

如果我改變[235]單詞將它仍然工作?最後的文件就是我正在閱讀的文件。是否有可能將命令輸出到此? – DwarfCode 2013-04-23 21:19:17

+0

你可以做任何你喜歡的正則表達式匹配,並且是管道不是問題。 – 2013-04-23 21:42:03