perl, добавить символ в i-ю группу захвата - PullRequest
6 голосов
/ 10 февраля 2012

У меня есть один лайнер:

perl -pe 's|.*?((\d{1,3}\.){3})xxx.*|\1|'

Я передаю эту команду некоторым вводом, например 192.168.1.xxx, и она работает. Теперь я хочу добавить 0 к выходной последовательности, но, конечно, если я просто добавлю 0 сразу после \1, он будет проанализирован как десятая группа захвата. Как я могу объединить его с директивой \1?

1 Ответ

11 голосов
/ 10 февраля 2012

Вы должны использовать $1 вместо \1 в подстановках . Тогда вы можете использовать фигурные скобки, чтобы однозначно написать это так:

perl -pe 's|.*?((\d{1,3}\.){3})xxx.*|${1}0|'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...