gpt4 book ai didi

regex - 使用 `sed` 查找重复出现的模式

转载 作者:行者123 更新时间:2023-12-04 16:23:08 26 4
gpt4 key购买 nike

我正在使用 GNU bash 4.3.48

我预料到了

echo "23S62M1I19M2D" | sed 's/.*\([0-9]*M\).*/\1/g'

会输出 62M19M...但不会。

sed 's/\([0-9]*M\)//g' 删除所有 [0-9]*M 并检索 23S1I2D。但是组 \1 并没有像我想象的那样工作。

sed 's/.*\([0-9]*M\).*/\1/g',检索M...

我做错了什么?

谢谢!

最佳答案

使用您展示的示例和 awk 您可以尝试以下程序。

echo "23S62M1I19M2D" | 
awk '
{
val=""
while(match($0,/[0-9]+M/)){
val=val substr($0,RSTART,RLENGTH)
$0=substr($0,RSTART+RLENGTH)
}
print val
}
'

解释: 简单的解释是,使用 echo 打印值并将其​​作为标准输入发送到 awk程序。在 awk 程序中使用它的 match 函数来匹配其中提到的正则表达式(/[0-9]+M)运行循环来查找所有匹配项在每一行中,并在每一行的最后打印收集到的匹配值。

关于regex - 使用 `sed` 查找重复出现的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69829591/

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