我有一个包含多行文本的文档。
示例(非实际):
*准备 42 从表中锁定删除,其中 type='test' and user_id='099'and number='+66719919*
我希望能够在文档中出现的任何地方搜索 user_id(不遵循模式)并将输出为:
user_id=009
或者
009
请问如何使用awk实现这一点?
谢谢。
我有一个包含多行文本的文档。
示例(非实际):
*准备 42 从表中锁定删除,其中 type='test' and user_id='099'and number='+66719919*
我希望能够在文档中出现的任何地方搜索 user_id(不遵循模式)并将输出为:
user_id=009
或者
009
请问如何使用awk实现这一点?
谢谢。
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'
你也可以使用 grep:
grep -o "user_id='\?[0-9]*'\?"
附加tr
以删除引号:
grep -o "user_id='\?[0-9]*'\?" | tr -d \'