2013-03-12 96 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

相关问题