A gewësse Geleeënheete wëlle mir den Text an enger Datei ersetzen, zum Beispill Änneren Document.txt alles wat "meng Famill" fir "eis" seet. Fir dëst z'erreechen kënne mir eise gewënschten Texteditor benotzen (Kate, Gedit, SublimeText, etc) awer et ass ëmmer gutt Varianten ze kennen, aner Weeër fir datselwecht Resultat z'erreechen 🙂
Et geschitt, datt mat reegelméisseg Ausdréck dëst kann erreecht ginn, de Kommando sed ass einfach herrlech, et huet endlos Varianten an Optiounen awer ... fir déi, déi just den Text ersetze wëllen mannst komplexe Wee méiglech, fir si ass datt ech dës vill méi einfach Variant bréngen:
Nom Beispill hu mir d'Datei Document.txt lokaliséiert an $ HOME / Document.txt mam folgenden Text:
(...) meng Famill Et ass wéi se all, wéi Ären oder Ärem Noper. Tatsächlech meng Famill Mir probéieren responsabel Leit ze sinn an an den Ae vun der Gesellschaft, politesch a sozial korrekt. Wéi och ëmmer, a mengem Haus ass et e schwaarzt Schof, an dat ass meng Roll LOL!. Ech war ëmmer deen deen net Angscht huet ze soen wat hien denkt (och wann et anscheinend net korrekt an den Ae vun der Gesellschaft ass), och wann a Wierklechkeet meng Famill sat ass mat der
Dreckhaut d'Gesellschaft.
Mat folgendem Kommando ännert Dir «meng Famill"vun"eis":
perl -pi -e "s[mi familia][nosotros]g" $HOME/Documento.txt
Et ass sou einfach 🙂
Also den Text wier:
(...) eis Et ass wéi se all, wéi Ären oder Ärem Noper. Tatsächlech eis Mir probéieren responsabel Leit ze sinn an an den Ae vun der Gesellschaft, politesch a sozial korrekt. Wéi och ëmmer, a mengem Haus ass et e schwaarzt Schof, an dat ass meng Roll LOL!. Ech war ëmmer deen deen net Angscht huet ze soen wat hien denkt (och wann et anscheinend net korrekt an den Ae vun der Gesellschaft ass), och wann a Wierklechkeet meng Famill sat ass mat der
Dreckhaut d'Gesellschaft.
D'Syntax ass:
perl -pi -e "s[lo-que-quiero-cambiar][lo-nuevo-a-poner]g" archivo-en-el-cual-reemplazar
De Kommando kann e bësse komplex ausgesinn, loosst eis et e bësse briechen an erkläert et e bësse méi einfach 😉
- Perl : Wat mir benotze wäerten, Perl
- -pi : Pí, wéi π (de geschätzte Wäert vun 3.14)
- -e : Den E stellt Iech vir fir «e auszeféieren» ^ - ^
- Dann an Zitater » mir maache mat engem op s a mir schléisse mat engem g: "sg" ... Stellt Iech den S fir Start an de G fir Game Over 😀 vir
- Dréit tëscht dem sg mir mussen zwee Sätze Klammern setzen: [] y [], sou ze sinn: "S [] [] g"
- An den éischte Klammern wéi ech uewe gesot hunn, geet den Text dee mir ewechhuelen an ersetzen duerch en neien, während an der zweeter Satz Klammern den neien Text fir ze setzen geet nom Beispill: "S [meng Famill] [mir] g"
Einfach ass et net?
D'Erklärung ass eigentlech vill méi extensiv wéi dat wat fir de Kommando noutwendeg ass, et ass ganz einfach ze verstoen 🙂
Perl ass vill, vill méi wéi e Wee fir den Text ze ersetzen, et ass eng ganz Sprooch 😉
Wann Dir méi doriwwer léiere wëllt, installéiert de Package perl-doc a kuck emol wien wéi et erlaabt, et ass just en anert Universum.
Iwwregens a fir zouzemaachen, unzehuelen datt Dir all .txt Dateien déi Dir hutt an $ HOME / Dokumenter / fannen an an all "meng Famill" duerch "eis" ersetzen, kënnt Dir matmaachen find + perl fir dëst z'erreechen:
find $HOME/Documentos/ -name *.txt -exec perl -p -i -e "s[mi familia][nosotros]g" {} \;
Oder mat enger Wildcard:
perl -p -i -e "s[mi familia][nosotros]g" $HOME/Documentos/*.txt
De Problem mat dëser zweeter Variant ass datt se net an Dateien ersat gëtt, déi an Ënnerdosser sinn 🙂
Egal, ech hoffen Dir hutt et interessant fonnt. Fir mech war et wierklech nëtzlech, ech kann den Text schonn direkt vum Terminal ersetzen ... super! 😀
21 Kommentaren, loosst ären
Gutt, ech mengen datt vill vun eis hei de Sed Kommando kennen, deen dee selwechten Zweck déngt, mécht et vill besser an ass méi einfach ze benotzen ...
Merci fir Äre Kommentar,
Just zwee Detailer, firwat sot Dir datt Sed et besser mécht? Ass et wierklech méi einfach mat sou vill "komesche" Personnagen ze benotzen?
Gréiss un all !!!. Ech hunn de Kommando benotzt zb, an déi hei beschriwwen Method mat Perl ass méi einfach. Merci KZKG ^ Gaara !!!.
Merci fir de Kommentar 🙂
Gutt, op d'mannst schéngt et mir méi einfach wéi regulär Ausdréck ... datt mat sou ville "komesche" Personnagen, eppes wierklech komplexes ze verstoen an ze léieren den Net-Gescheit ka gemaach ginn.
Do ass en "alen" Spréchwuert dobaussen: "Ech hat e Problem, ech hu beschloss Regular Expressiounen ze benotzen ... elo hunn ech ZWEE Probleemer" 😉
HAHAHAHAHAHAHA !!!
Regelméisseg Ausdréck kënnen eist Liewen op engem gewësse Punkt retten ... jo, et brauch laang ze léieren wéi een se benotzt an net stierwen ze probéieren.
Wann ech dëse Kommando viru Joere gewosst hätt, GOTT !! wéi einfach mäi Liewen gewiescht wier 😀
Kloer! Gutt behandelt si si ganz mächteg better Näischt besser fir Text ze manipuléieren. Awer heiansdo, wéi Dir an dësem Fall mat Perl seet, musst Dir net sou wäit goen wann e Ersatz genuch ass.
Ech hätt souwisou Python benotzt :)
Awer am Duuscht gesinn ech et nach méi einfach ... maachen ech eppes falsch?
sed -i "wann / wat-ech-wëll-änneren / wat-nei-ze-setzen /" Datei-an-wéi-ze-ersetzen
he he ... a wann ech "http://my.blog.com/content/" duerch "http://my.blog.com/uploads/files/" ersetze wëll ... schonn do musst Dir \ mat Plazen an anerer setzen , an et gëtt komplex oder net?
Et ass net obligatoresch / als Separator ze benotzen. Kuckt mat +
sed -i «s + http: //my.blog.com/content/+http: //my.blog.com/uploads/files/+» Datei
O_O ... WTF!
Dir hutt e ganzen Universum vun Optiounen fir mech elo opgemaach .. O_O
Ech hunn dës Posts gär, wou mir all eppes léieren 🙂
Ech wosst dat och net.
Ech benotze léiwer direkt vi ..
Esou einfach wéi:
:% s / eis / meng Famill / g
% -> ganzt Dokument
s -> sichen
g -> all Optriede
Greetings
Merci!
Ech wousst net wéi ech et mat vi maachen
Zu de Favoritte bäigefüügt!
Merci!
Kuckt Iech wann Dir e bësse vum rpl Kommando hutt
http://microbuffer.wordpress.com/2011/02/28/rpl-buscar-y-reemplazar-strings-en-linux-unix/
Super Entrée! Wann iergendeen interesséiert ass, d'selwecht mam Linux sed Kommando: http://www.sysadmit.com/2015/07/linux-reemplazar-texto-en-archivos-con-sed.html
A wat geschitt wann an der Datei wat ech ersetzen wëll Zitater huet?
Beispill ersetzt wat Text seet: »1 ″ duerch Text:» 2 ″
wéi wier de Kommando?
Hallo
Ech wollt eng String ersetzen, déi en @ an der Mëtt hat an nëmmen den Text geännert huet virun der at.
Text ze änneren: Vive Peru
neien Text: Viva mi patria @ percysalgado
Weist: Vive meng Heemecht
Merci fir Är Hëllef
"\" Dir musst de Schréiegt benotzen ier d'Charaktere mat duebeler Benotzung @, #, sou datt se als Text interpretéiert ginn.
A wéi maachen ech et a Windows ????