Інші рішення змішують синтаксиси регулярних виразів. Щоб використовувати шаблони perl / PCRE як для пошуку, так і для заміни та обробки лише відповідних файлів, це працює досить добре:
grep -rlZPi 'match1' | xargs -0r perl -pi -e 's/match2/replace/gi;'
де match1
і match2
зазвичай ідентичні, але match1
можуть бути спрощені для видалення більш вдосконалених функцій, які стосуються лише підстановки, наприклад, групи захоплення.
Переклад: grep
рекурсивно та список файлів, що відповідають цьому шаблону PCRE, розділені нулем для захисту будь-яких спеціальних символів у імені файлу, а потім передайте ті назви файлів, до xargs
яких очікує розділений за нулем список, але нічого не зробить, якщо не буде отримано імен, і дістатися perl
до ліній-замінників, де знайдено відповідність.
Додайте I
перемикач, grep
щоб ігнорувати бінарні файли. Для відповідності регістру відмітьте i
перемикач grep
і i
прапор, приєднаний до виразу заміни, але не сам i
перемикач perl
.