Как заменить знаки доллара перед переменной в строке на sed? - PullRequest
0 голосов
/ 23 февраля 2019

У меня возникла проблема при замене:

"count: $OFF_COUNT times"

на:

"count: " .. OFF_COUNT .. " times"

Я пытался:

sed 's/\$\([A-Z0-9_]+\)\b/" .. \1 .. "/g'

Но это не дало эффекта.

Просто неизменный вывод.

1 Ответ

0 голосов
/ 23 февраля 2019

У вас почти была правильная команда.Единственная проблема заключается в том, что в базовом синтаксисе sed символ + является литералом (эквивалентным [+]).Цитата sed * Приложение A Расширенные регулярные выражения :

Единственное различие между базовыми и расширенными регулярными выражениями заключается в поведении нескольких символов: ?,+, скобки и фигурные скобки ({}).
[...]
c\+ становится c+ при использовании расширенных регулярных выражений.Он соответствует одному или нескольким символам c.

Чтобы включить обычное значение + write \+

sed 's/\$\([A-Z0-9_]\+\)\b/" .. \1 .. "/g'

или использовать расширенный sed синтаксис

sed -E 's/\$([A-Z0-9_]+)\b/" .. \1 .. "/g'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...