Bizonyos esetekben a szöveget le akarjuk cserélni egy fájlban, például megváltoztatni a fájlt Document.txt mindent, amit a "családom" mond "nekünk". Ennek eléréséhez használhatjuk az általunk preferált szövegszerkesztőt (Kate, Gedit, SublimeText stb.), De mindig jó, ha ismerünk variánsokat, más módszereket ugyanazon eredmény elérésére 🙂
Előfordul, hogy reguláris kifejezések ezt elérheti, a sed parancs egyszerűen csodálatos, végtelen változatai és lehetőségei vannak, de ... azok számára, akik csak a a lehető legkomplexebb módonszámukra az, hogy ezt a sokkal egyszerűbb változatot hozom:
A példát követve megvan a fájl Document.txt található $ HOME / Document.txt a következő szöveggel:
(...) a családom Olyan, mint mindegyik, akár a tiéd vagy a szomszédé. Valójában a családom Igyekszünk felelős emberek lenni és a társadalom szemében, politikailag és társadalmilag korrektek. Az én házamban azonban van egy fekete juh, és ez az én szerepem LOL! Mindig én voltam az, aki nem fél elmondani, amit gondol (még akkor is, ha a társadalom szemében ez nyilvánvalóan nem helyes), bár a valóságban a családomnak elegem van a
piszoka mai társadalom.
A következő paranccsal megváltoztathatja a «a családom"által"mi„:
perl -pi -e "s[mi familia][nosotros]g" $HOME/Documento.txt
Ennyire egyszerű 🙂
Tehát a szöveg a következő lenne:
(...) mi Olyan, mint mindegyik, akár a tiéd vagy a szomszédé. Valójában mi Igyekszünk felelős emberek lenni és a társadalom szemében, politikailag és társadalmilag korrektek. Az én házamban azonban van egy fekete juh, és ez az én szerepem LOL! Mindig én voltam az, aki nem fél elmondani, amit gondol (még akkor is, ha a társadalom szemében ez nyilvánvalóan nem helyes), bár a valóságban a családomnak elegem van a
piszoka mai társadalom.
A szintaxis a következő:
perl -pi -e "s[lo-que-quiero-cambiar][lo-nuevo-a-poner]g" archivo-en-el-cual-reemplazar
A parancs kissé összetettnek tűnhet, bontsuk le egy kicsit, és magyarázzuk el kicsit egyszerűbben 😉
- perl : Mit fogunk használni, perl
- -pi : Pí, hogyan π (hozzávetőleges értéke 3.14)
- -e : Az E képzeli el, hogy «e végrehajtja» ^ - ^
- Majd idézőjelben » a-val nyitunk s és bezárunk egy g: "vmi" Képzelje el az S-t a Start és a G-t a Game Over 😀-hez
- Forduljon a sg két zárójelet kell tennünk: [] y [], mivel ilyen: "S [] [] g"
- Az első zárójelek belsejében, amint azt fentebb mondtam, az a szöveg kerül, amelyet el akarunk távolítani és lecserélni egy úttal, míg a második zárójelben az új szöveg kerül a példára: "S [családom] [mi] g"
Ugye egyszerű?
A magyarázat valójában sokkal kiterjedtebb, mint ami a parancshoz szükséges, meglehetősen egyszerű megérteni 🙂
A Perl sokkal, de sokkal több, mint a szöveg pótlásának módja, ez egy egész nyelv 😉
Ha többet szeretne megtudni róla, telepítse a csomagot perl-doc és vessen egy pillantást arra, hogy mit enged, ez csak egy másik univerzum.
Egyébként és bezárásként, feltételezve, hogy meg akarja találni az összes .txt fájlt, amely a $ HOME / Documents / fájlban található, és mindegyikben kicseréli a "családom" szót "velünk", csatlakozhat a find + perl programhoz ennek eléréséhez:
find $HOME/Documentos/ -name *.txt -exec perl -p -i -e "s[mi familia][nosotros]g" {} \;
Vagy helyettesítő karakter használatával:
perl -p -i -e "s[mi familia][nosotros]g" $HOME/Documentos/*.txt
A probléma ezzel a második változattal az, hogy nem helyettesíti az almappákban lévő fájlokat
Egyébként remélem érdekesnek találta. Számomra ez nagyon hasznos volt, máris kicserélhetem a szöveget közvetlenül a terminálról ... nagyszerű! 😀
Nos, azt hiszem, sokan ismerjük itt a sed parancsot, amely ugyanazt a célt szolgálja, sokkal jobban csinálja és könnyebben használható ...
Köszönöm a hozzászólásod,
Csak két részlet, miért mondod, hogy a sed teszi jobbá? Tényleg könnyebb ennyi "furcsa" karakterrel használni?
Üdvözlök mindenkit!!!. Használtam a parancsot szomjúság, és az itt leírt módszer a perl-rel egyszerűbb. Köszi KZKG ^ Gaara !!!.
Köszönöm a megjegyzést 🙂
Nos, legalábbis számomra úgy tűnik, hogy ez egyszerűbb, mint a reguláris kifejezések ... hogy ennyi "furcsa" karakter mellett valami igazán bonyolult, amit meg kell érteni és megtanulni a nem értők számára.
Van egy "régi" mondás: "Problémám volt, úgy döntöttem, hogy a reguláris kifejezéseket használom ... most KÉT problémám van" 😉
HAHAHAHAHAHAHA !!!
A rendszeres kifejezések egy bizonyos ponton megmenthetik az életünket ... igen, sok időbe telik, amíg megtanuljuk használni, és nem halunk meg próbálkozva.
Ha évekkel ezelőtt ismertem volna ezt a parancsot, ISTEN !! milyen egyszerű lett volna az életem 😀
Egyértelmű! Jól kezelhető, nagyon erősek. Semmi sem jobb a szöveg manipulálására. De néha, ahogy Ön ebben az esetben mondja a Perl-lel, nem kell olyan messzire mennie, ha elegendő a cseréje.
Amúgy is használtam volna a Pythont :)
De szomjúságban még egyszerűbbnek látom ... csinálok valamit rosszul?
sed -i "if / what-I-to-change / new-to-put /" file-to cserélni
heh heh ... és ha a "http://my.blog.com/content/" szót szeretném lecserélni a "http://my.blog.com/uploads/files/" 😀 szóra ... már ott van helyezni \ szóközökkel és másokkal, és bonyolulttá válik vagy sem?
Nem kötelező a / elválasztóként használni. Nézd meg a + gombbal
sed -i «s + http: //my.blog.com/content/+http: //my.blog.com/uploads/files/+» fájl
O_O… WTF!
A lehetőségek teljes univerzumát nyitottad meg előttem .. O_O
Szeretem ezeket a bejegyzéseket, ahol mindannyian tanulunk valamit something
Ezt én sem tudtam.
Inkább közvetlenül a vi ..
Egyszerű, mint:
:% s / us / családom / g
% -> teljes dokumentum
s -> keresés
g -> minden előfordulás
Greetings ..
Köszönöm!
Nem tudtam, hogyan kell csinálni a vi-vel
Hozzáadva a kedvencekhez!
Köszönöm!
Vessen egy pillantást rá, ha rendelkezik egy kicsit az rpl paranccsal
http://microbuffer.wordpress.com/2011/02/28/rpl-buscar-y-reemplazar-strings-en-linux-unix/
Remek belépés! Ha valakit érdekel, ugyanez a Linux sed paranccsal: http://www.sysadmit.com/2015/07/linux-reemplazar-texto-en-archivos-con-sed.html
És mi történik, ha a fájlban, amit cserélni akarok, vannak árajánlatok?
Példa cserélje ki a szöveget: »1 ″ szöveggel:» 2 ″
hogy lenne a parancs?
Helló
Egy olyan karakterláncot akartam kicserélni, amelynek közepe @ volt, és csak az at jel előtti szöveget változtatta meg.
változtatandó szöveg: éljen Peru
új szöveg: Viva mi patria @percysalgado
Megmutatva: Éljen a hazám
Köszönöm a segítséget
"\" Használnia kell a perjelet a @, # kettős használatú karakterek előtt, hogy szövegként értelmezzék őket.
És hogy tudom csinálni Windowsban ????