gpt4 book ai didi

regex - Sed:为什么 [^\]] 似乎不起作用?

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

我试图在第一个 ] 出现之前匹配/输出所有文本:

sed -i -r 's/^([^\]]*).*/\1/' "$FILE.tmp"

令人惊讶的是,这不起作用。

但是,搜索另一个括号确实有效:

sed -i -r 's/^([^\[]*).*/\1/' "$FILE.tmp"

这是一个 sed 错误还是我做错了?

我知道我可以使用 .*? 来解决这个问题,这已经足够好了,但是这个问题让我困惑了很长时间,所以我想知道我是否遗漏了什么。

(根据 --version,我使用的是 GNU sed 4.2.2。)

最佳答案

您不需要引用右括号 ] .事实上,您的正则表达式被解析为 [^\]其次是流浪] .

您想使用以下正则表达式(注意缺少 \ 引号):

sed -i -r 's/^([^]].*).*/\1/' "$FILE.tmp"

第二个正则表达式是偶然起作用的,因为 [[] 中没有特殊意义表达式,但您会发现它也匹配以 \ 开头的行.

事实上,当使用]时在[]组,它必须是第一个字符,如果第一个字符是 ^,则它必须是第二个字符.

关于regex - Sed:为什么 [^\]] 似乎不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35275040/

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