Pronađi & Zamijeni tekst u više dokumenata iz naredbenog retka

Anonim

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.

Pronađi & Zamijeni tekst u više dokumenata iz naredbenog retka