1

我有一个包含多行文本的文档。

示例(非实际):

*准备 42 从表中锁定删除,其中 type='test' and user_id='099'and number='+66719919*

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

user_id=009

或者

009

请问如何使用awk实现这一点?

谢谢。

4

2 回答 2

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'
于 2013-03-12T10:47:22.197 回答
0

你也可以使用 grep:

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

附加tr以删除引号:

grep -o "user_id='\?[0-9]*'\?" | tr -d \'
于 2013-03-12T11:21:44.307 回答