Поиск и замена строки в Linux? - PullRequest
2 голосов
/ 05 октября 2011

Как мне найти и заменить каждый экземпляр {% extends "a / b / c / d"%} на другой {% extends "e / f / g / h"%} в каждом файле в каталоге? Кроме того, если после оператора в той же строке что-нибудь придет, я бы хотел сохранить его.

Я использовал Perl, как показано ниже:

perl -pi -e 's/find/replace/g' *.html

Но я не знаю Perl и не знаю, как лучше всего избежать экранирования всех символов в моих строках поиска / замены (т. Е. {. /, "И т. Д.).

Есть ли более простое решение?

Ответы [ 2 ]

5 голосов
/ 05 октября 2011

Вы можете использовать какой-либо символ, отличный от / в синтаксисе perl's s/find/replace/g так что вам не нужно избегать всех слэшей в a/b/c/d:

perl -pi -e 's|{% extends "a/b/c/d" %}|{% extends "e/f/g/h" %}|g' *.html
2 голосов
/ 05 октября 2011
sed -i -e 's/{% extends "\/a\/b\/c\/d"/{% extends "\/e\/f\/g\/h/g"' *.html

или

sed -i -e 's|{% extends "a/b/c/d"|{% extends "e/f/g/h"|g' *.html
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...