2013-03-12 94 views
1

我有一個包含幾行文本的文檔。AWK搜索一個字符串並打印出現字符串的全文

實施例(未實際):

*準備42鎖定從表中刪除其中type = '測試' 和USER_ID = '099'and數=' + 66719919 *

我希望能夠搜索文檔中發生的user_id(不遵循模式)並輸出爲:

user_id = 009

OR

請我怎麼做到這一點用awk?

謝謝。

+0

'user_id = NUM​​'是否出現在兩行? – Thor 2013-03-12 11:24:58

回答

1
awk '/user_id/{for(i=1;i<=NF;i++){if($i~/user_id/){split($i,a,"=");print a[2]}}}' your_file 

測試:

> echo "*Prepare type='test' and user_id='099' and number='+66719919*" | awk '/user_id/{for(i=1;i<=NF;i++){if($i~/user_id/){split($i,a,"=");print a[2]}}}' 
'099' 

另一個問題:

> echo "*Prepare type='test' and user_id='099' and number='+66719919*" | awk '/user_id/{for(i=1;i<=NF;i++){if($i~/user_id/){ print $i}}}' 
user_id='099' 
+0

不錯的Sarathi。工作也是如此。如果可能的話,你可以向awk新手解釋一下,第二個命令是什麼?謝謝。 – ace 2013-03-14 11:50:05

0

你也可以使用grep:

grep -o "user_id='\?[0-9]*'\?" 

追加tr刪除引號:

grep -o "user_id='\?[0-9]*'\?" | tr -d \' 
+0

謝謝托爾。按預期完成工作。榮譽。乾杯。 – ace 2013-03-14 11:44:05

+1

@ace:很高興它爲你工作。在此說出感謝的方式是通過提供有用的答案和[接受](http://meta.stackexchange.com/a/5235/186615)最佳答案。 – Thor 2013-03-14 11:59:44