AWK搜索字符串并打印字符串出现的全文

时间:2013-03-12 10:42:54

标签: awk

我有一个包含几行文字的文件。

示例(非实际):

  

*准备42锁定删除表格中type ='test'和user_id ='099'和number ='+ 66719919 *

我希望能够在文档中发生的任何地方搜索user_id(不遵循模式)并输出为:

  

USER_ID = 009

OR

  

009

请问如何使用awk实现此目的?

感谢。

2 个答案:

答案 0 :(得分: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'

答案 1 :(得分:0)

你也可以使用grep:

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

附加tr以删除引号:

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