Regex заменить последнее вхождение строки в каждой строке

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

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

Можно ли делать с регулярным выражением?

Спасибо

Ответ 1

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

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

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

EDIT: Вы также должны добавить $, если хотите убедиться, что он заменяет последнее вхождение ABC в строке:

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