我有一个包含几行文字的文件。
示例(非实际):
*准备42锁定删除表格中type ='test'和user_id ='099'和number ='+ 66719919 *
我希望能够在文档中发生的任何地方搜索user_id(不遵循模式)并输出为:
USER_ID = 009
OR
009
请问如何使用awk实现此目的?
感谢。
答案 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 \'