t ~ egrep "f\([^\)]*\)" t f(yo) 正如预期的那样,egrep 匹配整行。 但对于以下命令,正则表达式不会捕获最后一个括号 -6ren">
gpt4 book ai didi

regex - 相同的正则表达式用 sed 和用 grep 的评估不同

转载 作者:行者123 更新时间:2023-11-29 09:28:06 24 4
gpt4 key购买 nike

考虑以下命令

~ echo "f(ew)" > t
~ egrep "f\([^\)]*\)" t
<b>f(yo)</b>

正如预期的那样,egrep 匹配整行。

但对于以下命令,正则表达式不会捕获最后一个括号

~ echo "f(ew)" > t
~ sed -i "s/f\([^\)]*\)/yo/" t
~ cat t
yo)

为什么最后一个括号没有被捕获?

最佳答案

不要引用它:

sed -i "s/f([^)]*)/yo/" t

或者也许使用-E/-r:

sed -E -i "s/f\([^)]*\)/yo/" t
sed -r -i "s/f\([^)]*\)/yo/" t

-E-r 使它像 egrep 一样解释模式:

-r, --regexp-extended
       use extended regular expressions in the script.

关于regex - 相同的正则表达式用 sed 和用 grep 的评估不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24757559/

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