无法引用sed中的捕获组
我想在字符串上附加一个字符 我有这个:无法引用sed中的捕获组,sed,Sed,我想在字符串上附加一个字符 我有这个: sed -r "s/\(.+:.+\)/\1,f/" "123:abc" 我只想在字符串末尾附加一个,f,并尝试引用捕获组\(.+:.+\)。但是,它不起作用。当我尝试引用捕获组\1时,不断出现此错误: sed: -e expression #1, char 17: invalid reference \1 on `s' command's RHS 那么idea呢?当您指定表示POSIX扩展语法的-r标志时,您使用的是POSIX基本语法(带转义括号)
sed -r "s/\(.+:.+\)/\1,f/" "123:abc"
我只想在字符串末尾附加一个,f
,并尝试引用捕获组\(.+:.+\)
。但是,它不起作用。当我尝试引用捕获组\1
时,不断出现此错误:
sed: -e expression #1, char 17: invalid reference \1 on `s' command's RHS
那么idea呢?当您指定表示POSIX扩展语法的
-r
标志时,您使用的是POSIX基本语法(带转义括号)
不要跳过括号,这应该可以。Sed之所以抱怨,是因为它认为没有一个组可供引用,而是有文字括号可供查找
... "s/(.+:.+)/\1,f/" ...
i、 e
这不是emacs风格,而是BRE风格。你的命令不完整好的。。。完整示例:
$echo“123:abc”>/tmp/sample.txt
$sed-r“s/(.+:.+)/\1,f/”/tmp/sample.txt
123:abc,f
将其添加到您的答案中,而不是这里。你发布的命令没有结束引号,这就是我所说的不完全有效。谢谢各位。请解释什么是BRE以及为什么不需要使用\(
)POSIX基本语法(与使用-r
标志得到的扩展相反)
>echo "123:abc" | sed -r "s/(.+:.+)/\1,f/"
123:abc,f