Намерете & Замяна на текст в множество документи от командния ред

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;' ~/Документи/.txt

За пример за намиране и замяна на цяла фраза, нека приемем, че ще заменим цялото изречение „Шоколадовата фабрика ” с „Магьосникът от Оз” в група от .txt файлове, започващи с „Филми”, съхранени в директорията с документи:

perl -pi -w -e 's/Шоколадовата фабрика/Магьосникът от Оз/g;' ~/Документи/Филми.txt

Намирането и замяната се извършва незабавно. Можете да проверите отново промяната, като използвате cat и grep за проверка:

"

cat ~/Documents/Films124.txt |grep Магьосникът от Оз"

Разбира се, това е доста напреднало и да, груповото намиране и замяна чрез множество документи може да се направи по по-удобен за потребителя начин чрез GUI приложения като TextWrangler и BBEdit, но понякога командният ред е просто по-бърз за бързи задачи като тази и други, които са подобни, плюс това не изисква никакви допълнителни изтегляния за използване.

Големи палци нагоре на Lifehacker за отличния трик.

Update: Командата ‘sed’ е друг начин за бързо намиране и замяна чрез командния ред. Покриването на sed е предимно тема за друга статия, но основният синтаксис за използване на sed за тази задача е малко по-прост и следователно по-лесен за запомняне:

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

Няма правилен или грешен начин, така че дали ще използвате perl или sed става въпрос на лични предпочитания.

Намерете & Замяна на текст в множество документи от командния ред