Nájsť & Nahradiť text vo viacerých dokumentoch z príkazového riadka
Ak vám vyhovuje príkazový riadok a niekedy ste v situácii, keď potrebujete nájsť a nahradiť slovo, frázu, adresu URL alebo znak v skupine viacerých textových dokumentov, perl to zvládne celkom dobre. Jednoduchý príkazový reťazec veľmi rýchlo vykoná skupinové hromadné vyhľadávanie a nahradenie textu, či už v jednom dokumente alebo v skupine viacerých dokumentov.
Ako veľa vecí v príkazovom riadku, ani tu neexistuje žiadny potvrdzovací proces, takže pred spustením príkazu sa budete chcieť uistiť, že vaša syntax je nastavená správne, inak možno budete musieť vykonať ďalšie vyhľadávanie a nahradenie opraviť preklep.
Základná syntax príkazu je nasledovná: perl -pi -w -e 's/THIS/THAT/g;' /cesta/k/suborom.txt
Pre príklad jedného slova, ak potrebujete nahradiť všetky výskyty výrazu „ogre“ výrazom „cornbread“ v každom súbore .txt v priečinku „Dokumenty“, potom by ste použili nasledujúci príkaz:
perl -pi -w -e 's/ogre/cornbread/g;' ~/Documents/.txt
Pre príklad nájdenia a nahradenia celej frázy predpokladajme, že nahradíme celú vetu „Továreň na čokoládu “ s „The Wizard of Oz“ v skupine súborov .txt začínajúcich na „Films“ uložených v adresári Documents:
perl -pi -w -e 's/Továreň na čokoládu/Čarodejník z krajiny Oz/g;' ~/Documents/Films.txt
Hľadanie a nahradenie sa vykoná okamžite. Zmenu môžete skontrolovať znova pomocou mačiek a grep na kontrolu:
cat ~/Documents/Films124.txt |grep Čarodejník z krajiny Oz"
Určite, je to dosť pokročilé a áno, dávkové vyhľadávanie a nahradzovanie prostredníctvom viacerých dokumentov je možné vykonať užívateľsky prívetivejším spôsobom pomocou aplikácií GUI, ako sú TextWrangler a BBEdit, ale niekedy je príkazový riadok rýchlejší na rýchle úlohy, ako je táto a ďalšie podobné, navyše nevyžaduje žiadne ďalšie sťahovanie.
Veľký palec hore Lifehackerovi za skvelý trik.
Update: Príkaz „sed“ je ďalším spôsobom rýchleho hľadania a nahradenia prostredníctvom príkazového riadku. Zaoberanie sed je väčšinou témou pre iný článok, ale základná syntax použitia sed na túto úlohu je o niečo jednoduchšia, a preto je ľahšie zapamätateľná:
sed -i 's/THIS/THAT/g' /cesta/k/súborom.txt
Neexistuje správny alebo nesprávny spôsob, takže to, či použijete perl alebo sed, sa stáva záležitosťou osobných preferencií.