Joissakin tapauksissa haluamme korvata tekstin tiedostossa, esimerkiksi muuttaa tiedostoa Document.txt kaikki mitä "perheeni" sanoo "meille". Tämän saavuttamiseksi voimme käyttää haluamaamme tekstieditoria (Kate, Gedit, SublimeText jne.), Mutta on aina hyvä tietää variantteja, muita tapoja saavuttaa sama tulos 🙂
Se tapahtuu niin säännölliset lausekkeet voit saavuttaa tämän, sed-komento on yksinkertaisesti upea, sillä on loputtomia muunnelmia ja vaihtoehtoja, mutta ... niille, jotka haluavat vain korvata tekstin mahdollisimman monimutkainen tapa, heille on se, että tuon tämän paljon yksinkertaisemman vaihtoehdon:
Esimerkin mukaisesti meillä on tiedosto Document.txt sijaitsevat $ HOME / Document.txt ja seuraava teksti:
(...) perheeni se on kuin ne kaikki, kuten sinun tai naapurisi. Itse asiassa perheeni Yritämme olla vastuullisia ihmisiä ja yhteiskunnan silmissä poliittisesti ja sosiaalisesti korrekteja. Talossani on kuitenkin musta lammas, ja se on roolini LOL! Olen aina ollut se, joka ei pelkää sanoa mitä ajattelee (vaikka se ei olekaan yhteiskunnan silmissä ilmeisesti oikein), vaikka todellisuudessa perheeni on kyllästynyt
likanykypäivän yhteiskunta.
Seuraavan komennon avulla muutat «perheeni"kirjoittanut"me":
perl -pi -e "s[mi familia][nosotros]g" $HOME/Documento.txt
Se on niin yksinkertaista 🙂
Joten teksti olisi:
(...) me se on kuin ne kaikki, kuten sinun tai naapurisi. Itse asiassa me Yritämme olla vastuullisia ihmisiä ja yhteiskunnan silmissä poliittisesti ja sosiaalisesti korrekteja. Talossani on kuitenkin musta lammas, ja se on roolini LOL! Olen aina ollut se, joka ei pelkää sanoa mitä ajattelee (vaikka se ei olekaan yhteiskunnan silmissä ilmeisesti oikein), vaikka todellisuudessa perheeni on kyllästynyt
likanykypäivän yhteiskunta.
Syntaksi on:
perl -pi -e "s[lo-que-quiero-cambiar][lo-nuevo-a-poner]g" archivo-en-el-cual-reemplazar
Komento saattaa tuntua hieman monimutkaiselta, hajotetaan se hieman ja selitetään se hieman yksinkertaisemmin 😉
- perl : Mitä käytämme, perl
- pi : Pí, miten π (likimääräinen arvo 3.14)
- -e : E kuvittelee sitä, että «e toteutetaan» ^ - ^
- Sitten lainausmerkeissä » avaamme a s ja lopetamme a g: "sg" … Kuvittele S for Start ja G Game Over 😀
- Käänny sg meidän on laitettava kaksi suluista: [] y [], koska se on: "S [] [] g"
- Ensimmäisten sulkeiden sisällä, kuten sanoin edellä, teksti, jonka haluamme poistaa ja korvata uudella, menee, kun taas toisessa suluissa uusi laitettava teksti menee esimerkin mukaisesti: "S [perheeni] [me] g"
Yksinkertainen, eikö olekin?
Selitys on itse asiassa paljon laajempi kuin mitä komento edellyttää, se on melko helppo ymmärtää 🙂
Perl on paljon, paljon enemmän kuin tapa korvata teksti, se on koko kieli 😉
Jos haluat lisätietoja siitä, asenna paketti perl-doc ja katsokaa kuka sen sallii, se on vain erilainen maailmankaikkeus.
Muuten ja sulkea olettaen, että haluat löytää kaikki .txt-tiedostot, jotka sinulla on kansiossa $ HOME / Documents / ja jokaisessa korvaa "perheeni" sanalla "me", voit liittyä find + perl-tiedostoon tämän saavuttamiseksi:
find $HOME/Documentos/ -name *.txt -exec perl -p -i -e "s[mi familia][nosotros]g" {} \;
Tai jokerimerkin avulla:
perl -p -i -e "s[mi familia][nosotros]g" $HOME/Documentos/*.txt
Tämän toisen version ongelma on, että se ei korvaa tiedostoja, jotka ovat alikansioissa 🙂
Joka tapauksessa, toivon, että pidit siitä mielenkiintoisena. Minulle se on ollut todella hyödyllinen, voin jo korvata tekstin suoraan terminaalista ... hieno! 😀
Luulen, että monet meistä täällä tietävät sed-komennon, jolla on sama tarkoitus, se tekee sen paljon paremmin ja sitä on helpompi käyttää ...
Kiitos kommentistasi,
Vain kaksi yksityiskohtaa, miksi sanot, että sed tekee siitä paremman? Onko sitä todella helpompi käyttää niin monien 'outojen' hahmojen kanssa?
Tervehdys kaikille!!!. Olen käyttänyt komentoa janoja tässä kuvattu menetelmä perlin kanssa on yksinkertaisempi. Kiitos KZKG ^ Gaara !!!.
Kiitos kommentista 🙂
No, ainakin minulle tämä tuntuu yksinkertaisemmalta kuin säännölliset lausekkeet ... että niin monien "outojen" hahmojen kanssa ei-tajuille voidaan tehdä jotain todella monimutkaista ymmärtää ja oppia.
Siellä on «vanha» sanonta: «Minulla oli ongelma, päätin käyttää säännöllisiä lausekkeita ... nyt minulla on KAKSI ongelmaa» 😉
HAHAHAHAHAHAHA !!!
Säännölliset lausekkeet voivat pelastaa henkemme tietyssä vaiheessa ... kyllä, kestää kauan oppia käyttämään niitä eikä kuolla yrittäessään.
Jos olisin tiennyt tämän komennon vuosia sitten, JUMALA !! kuinka yksinkertainen elämäni olisi ollut 😀
Asia selvä! Hyvin hoidetut, ne ovat erittäin tehokkaita 🙂 Ei mitään parempaa tekstin manipuloimiseksi. Mutta joskus, kuten sanot tässä tapauksessa Perlin kanssa, sinun ei tarvitse mennä niin pitkälle, jos korvaaminen riittää.
Olisin kuitenkin käyttänyt Pythonia :)
Mutta jano näen sen vielä yksinkertaisemmaksi ... teenkö jotain väärin?
sed -i "jos / mitä-haluan muuttaa / mitä-uutta-laittaa /" tiedosto-joka-korvata
heh heh ... ja jos haluan korvata "http://my.blog.com/content/" sanalla "http://my.blog.com/uploads/files/" 😀 ... jo sinne on laitettava \ välilyönteillä ja muilla ja siitä tulee monimutkainen vai ei?
/ Ei ole pakollista käyttää erottimena. Katso + -näppäimellä
sed -i «s + http: //my.blog.com/content/+http: //my.blog.com/uploads/files/+» -tiedosto
O_O ... WTF!
Olet avannut minulle koko vaihtoehtojen universumin nyt .. O_O
Rakastan näitä viestejä, joissa me kaikki oppimme jotain 🙂
En tiennyt sitä.
Haluan käyttää suoraan vi ..
Niin yksinkertainen kuin:
:% s / us / perheeni / g
% -> koko asiakirja
s -> etsi
g -> kaikki esiintymät
Tervehdys ..
Kiitos!
En tiennyt miten se tehdään vi: llä
Lisätty suosikkeihin!
Kiitos!
Katso jos sinulla on jonkin aikaa rpl-komentoon
http://microbuffer.wordpress.com/2011/02/28/rpl-buscar-y-reemplazar-strings-en-linux-unix/
Upea merkintä! Jos joku on kiinnostunut, sama Linux sed -komennolla: http://www.sysadmit.com/2015/07/linux-reemplazar-texto-en-archivos-con-sed.html
Entä jos tiedoston sisällä, jolla haluan korvata, on lainauksia?
Esimerkki tekstin sanan: »1 ″ korvaamisesta tekstillä:» 2 ″
miten komento olisi?
Hei
Halusin korvata merkkijonon, jonka keskellä oli @ ja joka muutti vain tekstiä ennen at-merkkiä.
muutettava teksti: Viva el Perú
uusi teksti: Viva mi patria @percysalgado
Näytetään: Eläköön kotimaani
Kiitos avusta
"\" Sinun on käytettävä kauttaviivaa ennen merkkejä, joissa on kaksinkertainen käyttö @, #, jotta ne tulkitaan tekstinä.
Ja miten teen sen ikkunoissa ????