gpt4 book ai didi

macos - MacOS Catalina 上的 sed/gsed 与 star 不按预期工作

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

我尝试了以下方法:

# echo "12MB" | sed -e 's/[bm]\*//i'
12MB
# echo "12MB" | sed -e 's/[bm]\+//i'
12
我期望两者产生相同的输出(贪婪匹配),但带有星号的却没有。我也尝试过 gsed,但结果相同。
当我尝试使用 -E # for extended re 时这两种形式都不起作用。
一个 ubuntu docker 容器也有同样的行为。
有人可以帮我理解为什么会这样吗?

最佳答案

首先,在 sed“基本”正则表达式模式中 *用于重复,\*是字面的星号。所以你的例子是

# echo "12MB" | sed -e 's/[bm]*//i'
12MB
...这仍然不会产生您预期的输出。
当您使用可见替换时,原因就很明显了:
# echo "12MB" | sed -e 's/[bm]*/!!!/i'
!!!12MB
模式在字符串的开头匹配,重复计数为零。一场比赛后,更换停止。
所以你真的想要一次或多次重复,就像在你的工作示例中一样。

关于macos - MacOS Catalina 上的 sed/gsed 与 star 不按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64146489/

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