我想在字符串上附加一个字符。
我有这个:
sed -r "s/\(.+:.+\)/\1,f/" "123:abc"
我只是想在字符串的末尾附加一个,f
,并试图引用捕获组\(.+:.+\)
。但是,它不起作用。当我尝试引用捕获组\1
时,我不断收到此错误:
sed: -e expression #1, char 17: invalid reference \1 on `s' command's RHS
有主意吗?
答案 0 :(得分:1)
当您指定-r
标志(表示POSIX扩展语法)时,您正在使用POSIX基本语法(带有转义括号)。
不要逃脱括号,这应该可行。 Sed抱怨是因为它认为没有要引用的组,而是要查找文字括号。
... "s/(.+:.+)/\1,f/" ...
即
>echo "123:abc" | sed -r "s/(.+:.+)/\1,f/"
123:abc,f