U određenim prilikama želimo zamijeniti tekst u datoteci, na primjer, promijeniti u Document.txt sve što kaže "moja obitelj" za "nas". Da bismo to postigli možemo koristiti naš omiljeni uređivač teksta (Kate, Gedit, SublimeText, itd.), ali uvijek je dobro znati varijante, druge načine za postizanje istog rezultata
Dogodi se da sa regularni izrazi to možete postići, naredba sed je jednostavno veličanstvena, ima bezbroj varijanti i opcija, ali ... za one koji samo žele zamijeniti tekst iz najmanje složen mogući način, za njih donosim ovu puno jednostavniju varijantu:
Slijedeći primjer, imamo datoteku Document.txt smješten u $ HOME / Document.txt sa sljedećim tekstom:
(...) moja obitelj Kao i svi oni, poput vašeg ili vašeg susjeda. Zapravo moja obitelj Trudimo se biti odgovorni ljudi i u očima društva politički i socijalno korektni. Međutim, u mojoj kući je crna ovca, i to je moja uloga LOL! Oduvijek sam bila ta koja se ne boji reći ono što misli (čak i ako to očito nije točno u očima društva), iako je u stvarnosti mojoj obitelji dosta
prljavštinadanašnje društvo.
Sljedećom naredbom promijenit ćete «moja obitelj"od"mi„:
perl -pi -e "s[mi familia][nosotros]g" $HOME/Documento.txt
Tako je jednostavno
Dakle, tekst bi bio:
(...) mi Kao i svi oni, poput vašeg ili vašeg susjeda. Zapravo mi Trudimo se biti odgovorni ljudi i u očima društva politički i socijalno korektni. Međutim, u mojoj kući je crna ovca, i to je moja uloga LOL! Oduvijek sam bila ta koja se ne boji reći ono što misli (čak i ako to očito nije točno u očima društva), iako je u stvarnosti mojoj obitelji dosta
prljavštinadanašnje društvo.
Sintaksa je:
perl -pi -e "s[lo-que-quiero-cambiar][lo-nuevo-a-poner]g" archivo-en-el-cual-reemplazar
Naredba se može činiti malo složenom, hajmo je malo raščlaniti i objasniti malo jednostavnije
- perl : Što ćemo koristiti, perl
- -pi : Pí, kako π (približna vrijednost 3.14)
- -e : E zamišljaju da «e izvrši» ^ - ^
- Zatim pod navodnicima » otvaramo s s i zatvaramo s a g: "sg" …zamislite S za početak i G za kraj igre
- Skrenite između sg moramo staviti dva skupa zagrada: [] y [], biti takav: "S [] [] g"
- Unutar prvih zagrada, kao što sam gore rekao, ići će tekst koji želimo ukloniti i zamijeniti novim, dok će u drugi set zagrada ići novi tekst, slijedeći primjer: "S [moja obitelj] [mi] g"
Jednostavno zar ne?
Objašnjenje je zapravo puno duže od onoga što je potrebno za naredbu, vrlo je jednostavno za razumjeti
Perl je puno, puno više od načina zamjene teksta, to je cijeli jezik
Ako želite saznati više o tome, instalirajte paket perl-dok i pogledajte whooodo što to dopušta, to je samo drugi svemir.
Usput i zatvoriti, pod pretpostavkom da želite pronaći sve .txt datoteke koje imate u $ HOME / Documents / i u svakoj zamijeniti "moja obitelj" s "mi", možete se pridružiti find + perl da biste to postigli:
find $HOME/Documentos/ -name *.txt -exec perl -p -i -e "s[mi familia][nosotros]g" {} \;
Ili pomoću zamjenskog znaka:
perl -p -i -e "s[mi familia][nosotros]g" $HOME/Documentos/*.txt
Problem s ovom drugom varijantom je taj što neće zamijeniti datoteke koje se nalaze u podmapama
U svakom slučaju, nadam se da vam je bilo zanimljivo. Za mene je bilo stvarno korisno, sada mogu zamijeniti tekst izravno s terminala... super!