Регулярное выражение для замены последнего вхождения строки в каждой строке - PullRequest
11 голосов
/ 08 июня 2011

Я использую sed -e 's/\(.*\)ABC/\1DEF/' myfile для замены последнего вхождения ABC на DEF в файле.

Я хочу изменить его, чтобы заменить последнее вхождение ABC на DEF в каждой строке в файле.

Возможно ли это сделать с помощью регулярного выражения?

Спасибо

1 Ответ

4 голосов
/ 08 июня 2011

Вам нужно добавить 'g' в конец вашего седа:

sed -e 's/\(.*\)ABC/\1DEF/g'

Это говорит sed заменять каждое вхождение вашего регулярного выражения ("глобально") вместо только первого вхождения.

РЕДАКТИРОВАТЬ: Вы также должны добавить $, если вы хотите убедиться, что он заменяет последнее вхождение ABC в строке:

sed -e 's/\(.*\)ABC$/\1DEF/g'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...