Në raste të caktuara ne duam të zëvendësojmë tekstin brenda një skedari, për shembull, ndryshimin në Dokumenti.txt gjithçka që thotë "familja ime" për "ne". Për ta arritur këtë ne mund të përdorim redaktuesin tonë të preferuar të tekstit (Kate, Gedit, SublimeText, etj.) Por është gjithmonë mirë të njohim variante, mënyra të tjera për të arritur të njëjtin rezultat
Ndodh që me shprehje të rregullta mund ta arrini këtë, komanda sed është thjesht madhështore, ka variante dhe mundësi të pafund por ... për ata që thjesht duan të zëvendësojnë tekstin nga mënyra më pak komplekse e mundshme, për ta është se unë sjell këtë variant shumë më të thjeshtë:
Duke ndjekur shembullin, kemi skedarin Dokumenti.txt e vendosur në $ HOME / Document.txt me tekstin e mëposhtëm:
(...) familja ime Likeshtë si të gjitha, si e jotja apo e fqinjit tuaj. Në fakt familja ime Ne përpiqemi të jemi njerëz të përgjegjshëm dhe në sytë e shoqërisë, politikisht dhe shoqërisht korrekt. Sidoqoftë, në shtëpinë time është një dele e zezë, dhe ky është roli im LOL! Unë gjithmonë kam qenë ai që nuk ka frikë të thotë atë që mendon (edhe pse në dukje nuk është e saktë në sytë e shoqërisë), edhe pse në të vërtetë familja ime është ngopur me
i poshtërshoqëria e sotme.
Me komandën e mëposhtme do të ndryshoni «familja ime"nga"na':
perl -pi -e "s[mi familia][nosotros]g" $HOME/Documento.txt
Thatshtë kaq e thjeshtë
Kështu që teksti do të ishte:
(...) na Likeshtë si të gjitha, si e jotja apo e fqinjit tuaj. Në fakt na Ne përpiqemi të jemi njerëz të përgjegjshëm dhe në sytë e shoqërisë, politikisht dhe shoqërisht korrekt. Sidoqoftë, në shtëpinë time është një dele e zezë, dhe ky është roli im LOL! Unë gjithmonë kam qenë ai që nuk ka frikë të thotë atë që mendon (edhe pse në dukje nuk është e saktë në sytë e shoqërisë), edhe pse në të vërtetë familja ime është ngopur me
i poshtërshoqëria e sotme.
Sintaksa është:
perl -pi -e "s[lo-que-quiero-cambiar][lo-nuevo-a-poner]g" archivo-en-el-cual-reemplazar
Komanda mund të duket paksa komplekse, le ta zbërthejmë pak dhe ta shpjegojmë pak më thjesht
- perl : Çfarë do të përdorim, perl
- -pi : Pí, si π (vlera e përafërt e 3.14)
- -e : E imagjinoni që «të ekzekutohet» ^ - ^
- Pastaj në thonjëza » ne hapemi me një s dhe ne mbyllim me një g: "sg" … Imagjinoni S për Fillimin dhe G për Lojën Mbi
- Kthehuni midis sg ne duhet të vendosim dy grupe të kllapave: [] y [], duke qenë kështu: "S [] [] g"
- Brenda kllapave të para siç thashë më lart, teksti që duam të heqim dhe zëvendësojmë me një të ri do të shkojë, ndërsa në grupin e dytë të kllapave do të shkojë teksti i ri për të vendosur, duke ndjekur shembullin: "S [familja ime] [ne] g"
E thjeshtë apo jo?
Shpjegimi është në të vërtetë shumë më i gjerë se sa është i nevojshëm për komandën, është mjaft e thjeshtë për tu kuptuar
Perl është shumë, shumë më tepër sesa një mënyrë për të zëvendësuar tekstin, është një gjuhë e tërë
Nëse dëshironi të mësoni më shumë për këtë, instaloni paketën perl-dok dhe hidhni një vështrim në whooodo çfarë lejon, është thjesht një univers tjetër
Nga rruga dhe për të mbyllur, duke supozuar se dëshironi të gjeni të gjitha skedarët .txt që keni në $ HOME / Documents / dhe në secilin prej tyre të zëvendësoni "familjen time" me "ne", ju mund të bashkoheni në find + perl për ta arritur këtë:
find $HOME/Documentos/ -name *.txt -exec perl -p -i -e "s[mi familia][nosotros]g" {} \;
Ose duke përdorur një kartë të egër:
perl -p -i -e "s[mi familia][nosotros]g" $HOME/Documentos/*.txt
Problemi me këtë variant të dytë, është se nuk do të zëvendësohet në skedarët që ndodhen në nënfolder
Gjithsesi, shpresoj se e keni parë interesante. Për mua ka qenë vërtet e dobishme, unë tashmë mund ta zëvendësoj tekstin direkt nga terminali ... shkëlqyeshëm! 😀
Epo, mendoj se shumë prej nesh këtu e dinë komandën sed, e cila shërben për të njëjtin qëllim, e bën atë shumë më mirë dhe është më e lehtë për t'u përdorur ...
Faleminderit per komentin tuaj
Vetëm dy detaje, pse thoni që sed e bën më mirë? A është vërtet më e lehtë të përdoret me kaq shumë personazhe 'të çuditshëm'?
Përshëndetje për të gjithë !!!. Unë kam përdorur komandën etje, dhe metoda e përshkruar këtu me perl është më e thjeshtë. Faleminderit KZKG ^ Gaara !!!.
Faleminderit për komentin
Epo, të paktën më duket se kjo është më e thjeshtë se shprehjet e rregullta ... që me kaq shumë karaktere 'të çuditshëm', diçka me të vërtetë komplekse për t’u kuptuar dhe mësuar mund t’i bëhet jo-mendjes.
Ekziston një fjalë e urtë «e vjetër» atje: «Unë kisha një problem, vendosa të përdor shprehje të rregullta ... tani kam dy probleme»
HAHAHAHAHAHAHA !!!
Shprehjet e rregullta mund të na shpëtojnë jetën në një pikë të caktuar ... po, duhet një kohë e gjatë për të mësuar se si t'i përdorësh ato dhe të mos vdesësh duke u përpjekur.
Sikur ta kisha ditur këtë urdhër vite më parë, ZOT !! sa e thjeshtë do të kishte qenë jeta
Qartë! Trajtuar mirë ato janë shumë të fuqishme 🙂 Asgjë më e mirë për të manipuluar tekstin. Por ndonjëherë, siç thoni në këtë rast me Perl, nuk keni pse të shkoni aq larg nëse mjafton një zëvendësim.
Sidoqoftë do të kisha përdorur Python :)
Por nga etja e shoh edhe më të thjeshtë ... po bëj diçka keq?
sed -i "nëse / çfarë-dua-të-ndryshoj / ri-për-të vendosur /" skedarin-në-cilin-për-zëvendësuar
heh heh ... dhe nëse dua të zëvendësoj "http://my.blog.com/content/" nga "http://my.blog.com/uploads/files/" 😀 ... tashmë atje ke për të vënë \ me hapësira dhe të tjerët, dhe bëhet komplekse apo jo?
Nuk është e detyrueshme të përdoret / si ndarës. Shikoni me +
sed -i «s + http: //my.blog.com/content/+http: //my.blog.com/uploads/files/+» skedari
O_O… WTF!
Tani më keni hapur një univers të tërë opsionesh .. O_O
I dua këto postime ku të gjithë mësojmë diçka
As këtë nuk e dija.
Unë preferoj të përdor direkt vi ..
Aq e thjeshtë sa:
:% s / ne / familja ime / g
% -> i tërë dokumenti
s -> kërko
g -> të gjitha dukuritë
Përshëndetje ..
Ju faleminderit!
Nuk dija si ta bëja me vi
Shtuar në të preferuarat!
Ju faleminderit!
Shikojeni atë nëse keni pak nga komanda rpl
http://microbuffer.wordpress.com/2011/02/28/rpl-buscar-y-reemplazar-strings-en-linux-unix/
Hyrje e shkëlqyeshme! Në rast se dikush është i interesuar, e njëjta gjë me komandën Linux sed: http://www.sysadmit.com/2015/07/linux-reemplazar-texto-en-archivos-con-sed.html
Dhe çfarë ndodh nëse brenda skedarit ajo që dua të zëvendësoj ka citate?
Shembulli zëvendësoni atë që thotë tekst: »1 ″ me tekst:» 2
si do te ishte komanda?
Përshëndetje
Doja të zëvendësoja një varg që kishte një @ në mes dhe të ndryshoja vetëm tekstin në shenjën para në.
teksti për të ndryshuar: Rroftë Peruja
teksti i ri: Viva mi patria @percysalgado
Tregohen: Rroftë atdheu im
Faleminderit për ndihmën tuaj
"\" Duhet të përdorni prerjen para karaktereve me përdorim të dyfishtë @, #, në mënyrë që ato të interpretohen si tekst.
Dhe si ta bëj në dritare ????