Знайти & Замінити текст у кількох документах за допомогою командного рядка

Anonim

Якщо вам зручно працювати з командним рядком і коли-небудь у ситуації, коли вам потрібно знайти та замінити слово, фразу, URL-адресу чи символ у групі кількох текстових документів, perl впорається із завданням досить добре. Простий командний рядок дуже швидко виконає груповий пакетний пошук і заміну в тексті, як в одному документі, так і в групі з кількох документів.

Як і багато інших речей у командному рядку, тут немає процесу підтвердження, тому ви захочете переконатися, що ваш синтаксис встановлено правильно перед тим, як ініціювати команду, інакше вам може знадобитися виконати інший пошук і заміну щоб виправити вашу помилку.

Основний синтаксис команди такий: perl -pi -w -e 's/THIS/THAT/g;' /path/to/files.txt

Для прикладу з одним словом, якщо вам потрібно замінити всі випадки «ogre» на «cornbread» у кожному файлі .txt у папці «Документи», тоді ви скористаєтеся такою командою:

perl -pi -w -e 's/ogre/cornbread/g;' ~/Documents/.txt

Для прикладу пошуку та заміни цілої фрази припустімо, що ми замінимо все речення «Шоколадна фабрика» » із «Чарівником країни Оз» у групі файлів .txt, які починаються на «Фільми», збережених у каталозі «Документи»:

perl -pi -w -e 's/Шоколадна фабрика/Чарівник країни Оз/g;' ~/Documents/Films.txt

Пошук і заміна виконуються негайно. Ви можете ще раз перевірити зміни, використовуючи cat і grep для перевірки:

"

cat ~/Documents/Films124.txt |grep Wizard of Oz"

Правда, це досить просунутий процес, і так, пакетний пошук і заміну в кількох документах можна зробити зручнішим способом за допомогою графічних програм, таких як TextWrangler і BBEdit, але іноді командний рядок працює швидше для швидких завдань, подібних до цієї та інших схожих, а також для використання не потрібні додаткові завантаження.

Великі пальці вгору Lifehacker за чудовий трюк.

Update: команда «sed» — це ще один спосіб швидкого пошуку та заміни за допомогою командного рядка. Висвітлення sed — це здебільшого тема для іншої статті, але базовий синтаксис використання sed для цього завдання дещо простіший і тому його легше запам’ятати:

sed -i 's/THIS/THAT/g' /path/to/files.txt

Немає правильного чи неправильного шляху, тому використання perl чи sed стає справою особистих уподобань.

Знайти & Замінити текст у кількох документах за допомогою командного рядка