gpt4 book ai didi

regex - grep 可以只打印匹配的缓冲区吗?

转载 作者:太空狗 更新时间:2023-10-29 11:07:39 26 4
gpt4 key购买 nike

如果我这样做

# perl -lne "print \$1 if /'?(\d{5})'?:/" courses.yaml
00000
01005

然后我得到了我想要的结果,但现在我想用 grep 代替。

为什么下面的命令没有得到相同的输出?

# grep -oP "\'?(\d{5})\'?:" courses.yaml 
'00000':
'01005':

最佳答案

您在第一种情况下打印第 1 组内容,在第二种情况下打印整个比赛。将 grep-oP 一起使用时,您只能打印整个匹配项,因此,使用 (?='?:) 前瞻仅在 : 之后返回一个 5 位数的 block ,前面有一个可选的单引号:

echo "'00000':  '01005':" | grep -Po "\d{5}(?='?:)"

参见 demo

我认为在这里使用回顾没有意义,因为 ' 在您的模式中是可选的。

关于regex - grep 可以只打印匹配的缓冲区吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39018672/

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