gpt4 book ai didi

正则表达式不能与 sed 一起正常工作,但可以在 regex101 中工作

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

我只是想在每行中第一次出现单个空格字符之前删除所有内容。Eg.50G This is a Test (0000) 1234p (String).ext 应该变成 This is a Test (0000) 1234p (String).ext

所以我正在使用这个简单的正则表达式 - ^.+?\s(.*) 我只是想在组中的第一个空格字符之后包装所有内容,然后尝试替换与第一组整场比赛

现在这个问题是它在 regex101 中运行良好 - https://regex101.com/r/1dAUcO/1但是当我在终端中使用 sed 尝试相同的正则表达式时,它返回不同的输出。这是 sed 命令 - echo "50G This is a Test (0000) 1234p (String).ext"| sed -E 's|^.+?\s(.*)|\1|g'

最佳答案

您正在使用此 sed:

sed -E 's|^.+?\s(.*)|\1|g

.+? 的意图是使其成为惰性匹配,但是 sed(即使在 ERE 模式下)不支持惰性量词。

如果您考虑使用 perl 那么它会按原样工作,因为 perl 支持惰性量词:

echo "50G This is a Test (0000) 1234p (String).ext" |
perl -pe 's|^.+?\s(.*)|\1|g'

This is a Test (0000) 1234p (String).ext

但是 我强烈建议为此使用cut,因为您不必费心使用正则表达式,这就是cut专为:

echo "50G This is a Test (0000) 1234p (String).ext" |
cut -d " " -f2-

This is a Test (0000) 1234p (String).ext

关于正则表达式不能与 sed 一起正常工作,但可以在 regex101 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68135887/

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