не может ссылаться на группу захвата в sed - PullRequest
0 голосов
/ 30 октября 2019

Я хочу добавить символ в строку.

У меня есть это:

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

Я просто хочу добавить ,f в конец строки, и япытаясь сослаться на группу захвата \(.+:.+\). Но это не работает. Я получаю эту ошибку, когда пытаюсь сослаться на группу захвата \1:

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

А идея?

1 Ответ

1 голос
/ 30 октября 2019

Вы используете синтаксис POSIX Basic (с экранированными скобками), когда вы указали флаг -r, который означает расширенный синтаксис POSIX.

Подробнее по этому вопросу

Не избегайте скобок, и это должно сработать. Сед жалуется, потому что не думает, что есть группа, на которую можно сослаться, но вместо этого нужно найти буквальные скобки.

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

т.е.

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