Pronađi & Zamijeni tekst u više dokumenata iz naredbenog retka
Ako se dobro snalazite u naredbenom retku i ikada u situaciji da trebate pronaći i zamijeniti riječ, frazu, URL ili znak u grupi od više tekstualnih dokumenata, perl prilično dobro obavlja posao. Jednostavan naredbeni niz vrlo brzo će izvesti grupno traženje i zamjenu teksta, bilo u jednom dokumentu ili u grupi od više dokumenata.
Kao i mnoge druge stvari u naredbenom retku, ne postoji proces potvrde, pa ćete htjeti provjeriti je li vaša sintaksa ispravno postavljena prije pokretanja naredbe, inače ćete možda trebati napraviti još jedan pronađi i zamijeni da popravim vašu grešku pri upisu.
Osnovna sintaksa naredbi je sljedeća: perl -pi -w -e 's/THIS/THAT/g;' /path/to/files.txt
Za primjer jedne riječi, ako trebate zamijeniti sve instance "ogre" s "cornbread" u svakoj .txt datoteci unutar mape “Dokumenti”, tada biste upotrijebili sljedeću naredbu:
perl -pi -w -e 's/ogre/cornbread/g;' ~/Documents/.txt
Za primjer pronalaženja i zamjene cijele fraze, pretpostavimo da ćemo zamijeniti cijelu rečenicu “Tvornica čokolade ” s “Čarobnjak iz Oza” u grupi .txt datoteka koje počinju s “Filmovi” pohranjene u direktoriju Dokumenti:
perl -pi -w -e 's/Tvornica čokolade/Čarobnjak iz Oza/g;' ~/Documents/Films.txt
Pronalaženje i zamjena vrši se odmah. Možete još jednom provjeriti promjenu koristeći cat i grep za provjeru:
cat ~/Documents/Films124.txt |grep Čarobnjak iz Oza"
Doduše, ovo je prilično napredno, i da, grupno pronalaženje i zamjena kroz više dokumenata može se obaviti na način koji je lakši za korištenje putem GUI aplikacija kao što su TextWrangler i BBEdit, ali ponekad je naredbeni redak samo brži za brze zadatke poput ovog i druge slične, plus ne zahtijeva nikakva dodatna preuzimanja za korištenje.
Veliki palac gore Lifehackeru za odličan trik.
Update: Naredba 'sed' još je jedan način brzog traženja i zamjene putem naredbenog retka. Pokrivanje sed-a uglavnom je tema za drugi članak, ali osnovna sintaksa korištenja sed-a za ovaj zadatak je malo jednostavnija i stoga lakša za pamćenje:
sed -i 's/THIS/THAT/g' /path/to/files.txt
Ne postoji pravi ili pogrešan način, tako da hoćete li koristiti perl ili sed postaje stvar osobnih preferencija.