gpt4 book ai didi

regex - 为什么我在 eshell 中使用 sed 会得到奇怪的结果?

转载 作者:行者123 更新时间:2023-12-04 06:07:20 24 4
gpt4 key购买 nike

我在将“查找”的结果传送到 sed 时遇到了麻烦。我将它简化为我可以打破的最简单的事情,我得到了这个:

echo 1234567890abcdefghijklmnopqrstuvwxyz | sed 's/[:digit:]*/X/g'

我希望得到:
Xabcdefghijklmnopqrstuvwxyz

我从中得到的输出是:
X1X2X3X4X5X6X7X8X9X0XaXbXcXeXfXhXjXkXlXmXnXoXpXqXrXsXuXvXwXxXyXzX

这不是我所期望的。如果我将正则表达式更改为:
echo 1234567890abcdefghijklmnopqrstuvwxyz | sed 's/[0-9]*/X/g'

我得到:
XaXbXcXdXeXfXgXhXiXjXkXlXmXnXoXpXqXrXsXtXuXvXwXxXyXzX

这更接近我的预期。我刚刚意识到我在标准终端中没有这个问题,只有在 aquamacs eshell 中......我认为它一定是字符编码问题?也许与unicode有关?我如何确定这一点,以及如何解决这个问题?

最佳答案

请记住,reg-exp char '*' 表示“匹配 或更多之前的字符”(在本例中为 char 类)

正如@SamHoice 所指出的,您需要“[[:digit:]]”。

所以你可以减少一行中的所有数字 1 X

echo 1234567890abcdefghijklmnopqrstuvwxyz | sed 's/[[:digit:]][[:digit:]]*/X/g'
Xabcdefghijklmnopqrstuvwxyz

或用 X 代替所有数字
echo 1234567890abcdefghijklmnopqrstuvwxyz | sed 's/[[:digit:]]/X/g'
XXXXXXXXXXabcdefghijklmnopqrstuvwxyz

如果这些都不起作用,请编辑您的问题以包含您需要的输出。

我希望这有帮助。

关于regex - 为什么我在 eshell 中使用 sed 会得到奇怪的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8204199/

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