найти и заменить - PullRequest
       13

найти и заменить

0 голосов
/ 03 августа 2009

Найти:

regexp1 **sometext** regexp2

Заменить на:

newregexp1 **sometext** newregexp2

Здесь я не хочу, чтобы **sometext** был изменен.
То есть, если у меня есть следующие строки в файле:

Hello somebody! Have a good day.
Hello somebodyelse! Have a good day.

Я хочу вывод:

Bye somebody! Good night.
Bye somebodyelse! Good night.

Мой поиск по регулярному выражению будет иметь следующий вид:

Hello .*! Have a good day.

Как я могу использовать ключевое слово \1 с sed (или любым инструментом linux) для достижения этой цели.
Пожалуйста, помогите мне с фактическим синтаксисом команды.

Также, если у вас есть способ сделать это в блокноте ++, пожалуйста, дайте мне знать.

Спасибо за любую помощь!

Ответы [ 2 ]

1 голос
/ 03 августа 2009

Попробуйте:

sed 's/Hello \(.*\)! Have a good day./Bye \1! Good night./' MyInputFile > MyOutputFile
0 голосов
/ 03 августа 2009
echo "Hello somebody! Have a good day" | sed -e 's/Hello \(.*\) Have a good day/Bye \1 Good night./'

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...