awk怎么将自定义匹配的结果传给变量?

比如

str="abc d:aaa, timestamp:  
dwadwa d:bbb, timestamp:  
rererere d:ccc, timestamp:  
"

怎么使用awk提取最终内容为一行: aaa, bbb, ccc

我知道在正则中用 ()可以将想要保留的内容保留,然后在$1 表示这个内容,但是在awk中似乎无效。

我的尝试:
awk '{sub(/.+d:(\w+).+/n/,$1); print }'
肯定是报错了,或者有什么别的办法可以实现这个功能也行,但是最好是用awk实现,多谢了~

2个回答

可以定义一个变量然后接收 awk 的输出结果:

result=`echo $str | awk '{sub(/.+d:(\w+).+/n/,$1); print }'`

Tab 上面那个字符是执行命令的,用它执行命令返回的结果赋值给一个变量。

wojiushiwo945you
毕小宝 回复ljquu17: 我理解的是你已经得到了字符串,想赋值给外界。如果是想在 awk 中匹配字符串,看 str 的格式直接用分割不行吗,分割符号冒号,取第二列就是 aaa 了的。
10 个月之前 回复
BoJackuu
ljquu17 awk里面的$1和正则的$1不是一回事,所以这么执行肯定也不行
10 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐