2015-04-17 80 views
0

比方說我們我有這樣awk腳本到兩個字符串之間解析其同名

Hello, 12345 
     This is going to be fun 
     ABC:172-1345, 
      172-1323 
     There is more string here. 

Hello, 34567 
    This is not going to be fun 
     ABC:172-2345 
    There is more string here 

輸出的文字應該是

12345 ABC:172-1345 
34567 ABC:172-2345 

我們能否在awk實現這一目標? 我們還必須考慮最後一個Hello,因爲它不會有另一個Hello來擁有結束分析字符串。

+5

這是相當廣泛的。你能指定什麼是底層算法和模式嗎? '你好,DIGIT' +一行+ ABC:NUMBER'或者更復雜的東西? – fedorqui

回答

0

最簡單的:

awk -v RS=Hello, 'NR != 1 { print $1, $NF }' 

這將文件分割成Hello,分隔的記錄,並打印在每條記錄的第一和最後一個記號。 NR == 1被排除,因爲它是第一個Hello,之前的空位。

請注意,儘管最常見的awk(mawk和gawk)接受它,但多字符RS並不嚴格符合POSIX標準。

0
$ awk -v RS= '{print $2,$NF}' file 
12345 ABC:172-1345 
34567 ABC:172-2345 
相關問題