无法引用sed中的捕获组

时间:2019-10-30 18:52:58

标签: sed

我想在字符串上附加一个字符。

我有这个:

sed -r "s/\(.+:.+\)/\1,f/" "123:abc"

我只是想在字符串的末尾附加一个,f,并试图引用捕获组\(.+:.+\)。但是,它不起作用。当我尝试引用捕获组\1时,我不断收到此错误:

sed: -e expression #1, char 17: invalid reference \1 on `s' command's RHS

有主意吗?

1 个答案:

答案 0 :(得分:1)

当您指定-r标志(表示POSIX扩展语法)时,您正在使用POSIX基本语法(带有转义括号)。

More on this subject

不要逃脱括号,这应该可行。 Sed抱怨是因为它认为没有要引用的组,而是要查找文字括号。

... "s/(.+:.+)/\1,f/" ...

>echo "123:abc" | sed -r "s/(.+:.+)/\1,f/"
123:abc,f