Ersetzt Text an Dateien mat just engem Kommando: perl

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 Dreck haut 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 Dreck haut 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! 😀


Den Inhalt vum Artikel hält sech un eis Prinzipie vun redaktionnell Ethik. Fir e Feeler ze mellen klickt hei.

21 Kommentaren, loosst ären

Gitt Äre Kommentar

Är Email Adress gëtt net publizéiert ginn. Néideg Felder sinn markéiert mat *

*

*

  1. Responsabel fir d'Daten: Miguel Ángel Gatón
  2. Zweck vun den Donnéeën: Kontroll SPAM, Kommentarmanagement.
  3. Legitimatioun: Är Zoustëmmung
  4. Kommunikatioun vun den Donnéeën: D'Donnéeë ginn net un Drëttubidder matgedeelt ausser duerch legal Verpflichtung.
  5. Datenspeicher: Datebank gehost vun Occentus Networks (EU)
  6. Rechter: Zu all Moment kënnt Dir Är Informatioun limitéieren, recuperéieren an läschen.

  1.   Boom sot

    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 ...

    1.    KZKG ^ Gaara sot

      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?

  2.   Federico A. Valdes Toujague sot

    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 !!!.

    1.    KZKG ^ Gaara sot

      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.

      1.    giskard sot

        Do ass en "alen" Spréchwuert dobaussen: "Ech hat e Problem, ech hu beschloss Regular Expressiounen ze benotzen ... elo hunn ech ZWEE Probleemer" 😉

        1.    KZKG ^ Gaara sot

          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 😀

          1.    giskard sot

            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 :)

    2.    dhunter sot

      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

      1.    KZKG ^ Gaara sot

        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?

        1.    dhunter sot

          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

          1.    KZKG ^ Gaara sot

            O_O ... WTF!
            Dir hutt e ganzen Universum vun Optiounen fir mech elo opgemaach .. O_O

          2.    giskard sot

            Ech hunn dës Posts gär, wou mir all eppes léieren 🙂
            Ech wosst dat och net.

  3.   RAW-Basis sot

    Ech benotze léiwer direkt vi ..

    Esou einfach wéi:
    :% s / eis / meng Famill / g

    % -> ganzt Dokument
    s -> sichen
    g -> all Optriede

    Greetings

    1.    KZKG ^ Gaara sot

      Merci!
      Ech wousst net wéi ech et mat vi maachen

  4.   st0rmt4il sot

    Zu de Favoritte bäigefüügt!

    Merci!

  5.   n3 Stuerm sot
  6.   Duran G. sot

    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

    1.    Zweifelen sot

      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?

  7.   Percy salgado sot

    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

  8.   anonym sot

    "\" Dir musst de Schréiegt benotzen ier d'Charaktere mat duebeler Benotzung @, #, sou datt se als Text interpretéiert ginn.

  9.   gaba sot

    A wéi maachen ech et a Windows ????