gpt4 book ai didi

awk - gawk 中的正则表达式匹配多种方式

转载 作者:行者123 更新时间:2023-12-03 18:36:10 24 4
gpt4 key购买 nike

我有一些文本需要拆分以提取相关参数,而我的 [g]awk match 命令不起作用 - 我只是想了解为什么?! (我现在已经写了一个不太优雅的方法......)。
所以字符串是 blahblah|msgcontent1=HeaderUUIiewConsenFlagPSMessage|msgtype2=Blah002|msgcontent2=header我只想输出 msgcontent1= 的内容,也是echo "blahblah|msgcontent1=HeaderUUIiewConsenFlagPSMessage|msgtype2=Blah002|msgcontent2=header" | gawk '{ if (match($0,/msgcontent1=(.*)[|]/,a)) { print a[1]; } }'麻烦而不是得到HeaderUUIiewConsenFlagPSMessage我得到了从那里到字符串 HeaderUUIiewConsenFlagPSMessage|msgtype2=Blah002 的最后一个管道的所有内容的匹配
现在我接受这是因为 /msgcontent1=(.*)[|]/ 中的正则表达式可以匹配多种方式,但是我如何让它按照我想要的方式匹配?

最佳答案

使用您显示的样本,请尝试以下操作。在 GNU awk 中编写和测试,这将只打印 msgcontent1= 中的内容,直到 | 第一次出现。

awk 'match($0,/msgcontent1=[^|]*/){print substr($0,RSTART+12,RLENGTH-12)}' Input_file
或使用 echo + awk 尝试:
echo "blahblah|msgcontent1=HeaderUUIiewConsenFlagPSMessage|msgtype2=Blah002|msgcontent2=header" |
awk 'match($0,/msgcontent1=[^|]*/){print substr($0,RSTART+12,RLENGTH-12)}'

使用 GNU FPAT 中的 awk 选项:
awk -v FPAT='msgcontent1=[^|]*' '{sub(/.*=/,"",$1);print $1}' Input_file

关于awk - gawk 中的正则表达式匹配多种方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66717900/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com