无法引用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