Besedilo v datotekah zamenjajte z enim ukazom: perl

Ob določenih primerih želimo zamenjati besedilo v datoteki, na primer spremeniti datoteko Document.txt vse, kar "moja družina" govori za "nas". Da bi to dosegli, lahko uporabimo želeni urejevalnik besedil (Kate, Gedit, SublimeText itd.), Vendar je vedno dobro poznati različice in druge načine za doseganje enakega rezultata

Zgodi se, da s regularni izrazi to lahko dosežete, ukaz sed je preprosto čudovit, ima nešteto različic in možnosti, ampak ... za tiste, ki želijo samo zamenjati besedilo iz najmanj zapleten način, zanje prinašam to veliko preprostejšo različico:

Po zgledu imamo datoteko Document.txt ki se nahaja v $ HOME / Document.txt z naslednjim besedilom:

(...) moja družina Podobno je vsem, tako kot vašemu ali sosedovemu. Pravzaprav moja družina Trudimo se biti odgovorni ljudje in v očeh družbe politično in družbeno korektni. Vendar je v moji hiši črna ovca in to je moja vloga LOL! Vedno sem bil tisti, ki se ne boji povedati, kar misli (čeprav očitno v očeh družbe ni očitno pravilno), čeprav je v resnici moja družina sita umazanijo današnja družba.

Z naslednjim ukazom boste spremenili «moja družina"avtor"nam":

perl -pi -e "s[mi familia][nosotros]g" $HOME/Documento.txt

Tako preprosto je 🙂

Besedilo bi torej bilo:

(...) nam Podobno je vsem, tako kot vašemu ali sosedovemu. Pravzaprav nam Trudimo se biti odgovorni ljudje in v očeh družbe politično in družbeno korektni. Vendar je v moji hiši črna ovca in to je moja vloga LOL! Vedno sem bil tisti, ki se ne boji povedati, kar misli (čeprav očitno v očeh družbe ni očitno pravilno), čeprav je v resnici moja družina sita umazanijo današnja družba.

Sintaksa je:

perl -pi -e "s[lo-que-quiero-cambiar][lo-nuevo-a-poner]g" archivo-en-el-cual-reemplazar

Ukaz se morda zdi nekoliko zapleten, razčlenimo ga in razložimo nekoliko preprosteje 😉

  • perl : Kaj bomo uporabili, perl
  • -pi : Pí, kako π (približna vrednost 3.14)
  • -e : E si predstavljajo, da bi "e izvršil" ^ - ^
  • Potem v narekovajih » odpremo z s in zapremo z g: "sg" ... Predstavljajte si S za Start in G za Game Over Over
  • Zavijte med sg postaviti moramo dva sklopa oklepajev: [] y [], biti tak: "S [] [] g"
  • Znotraj prvih oklepajev, kot sem rekel zgoraj, bo šlo besedilo, ki ga želimo odstraniti in nadomestiti z novim, v drugem naboru oklepajev pa novo besedilo, ki ga bomo postavili, po zgledu: "S [moja družina] [mi] g"

Preprosto, kajne?

Razlaga je pravzaprav veliko obsežnejša od tiste, ki je potrebna za ukaz, razumljiva je povsem enostavno 🙂

Perl je veliko več kot le način, kako nadomestiti besedilo, je cel jezik 😉

Če želite o tem izvedeti več, namestite paket perl-dok in si oglejte, kdo sploh dopušča, to je samo drugo vesolje

Mimogrede in če želite zapreti, ob predpostavki, da želite najti vse datoteke .txt, ki jih imate v $ HOME / Documents /, in v vsaki zamenjati "moja družina" z "mi", se lahko pridružite find + perl, da to dosežete:

find $HOME/Documentos/ -name *.txt -exec perl -p -i -e "s[mi familia][nosotros]g" {} \;

Ali z uporabo nadomestnega znaka:

perl -p -i -e "s[mi familia][nosotros]g" $HOME/Documentos/*.txt

Težava te druge različice je, da ne bo zamenjala datotek v podmapah ers

Kakorkoli, upam, da se vam je zdelo zanimivo. Zame je bilo zelo koristno, besedilo lahko že zamenjam neposredno s terminala ... super! 😀


Pustite svoj komentar

Vaš e-naslov ne bo objavljen. Obvezna polja so označena z *

*

*

  1. Za podatke odgovoren: Miguel Ángel Gatón
  2. Namen podatkov: Nadzor neželene pošte, upravljanje komentarjev.
  3. Legitimacija: Vaše soglasje
  4. Sporočanje podatkov: Podatki se ne bodo posredovali tretjim osebam, razen po zakonski obveznosti.
  5. Shranjevanje podatkov: Zbirka podatkov, ki jo gosti Occentus Networks (EU)
  6. Pravice: Kadar koli lahko omejite, obnovite in izbrišete svoje podatke.

  1.   Boom je dejal

    No, mislim, da mnogi od nas tukaj poznamo ukaz sed, ki služi istemu namenu, je veliko boljši in enostavnejši za uporabo ...

    1.    KZKG ^ Gaara je dejal

      Hvala za vaš komentar,
      Samo dve podrobnosti, zakaj pravite, da sed izboljša? Je res lažje uporabljati s toliko 'čudnimi' znaki?

  2.   Federico A. Valdes Toujague je dejal

    Lep pozdrav vsem !!!. Uporabil sem ukaz žeja, in tukaj opisana metoda s perl je preprostejša. Hvala KZKG ^ Gaara !!!.

    1.    KZKG ^ Gaara je dejal

      Hvala za komentar 🙂
      No, vsaj zdi se mi, da je to bolj preprosto kot regularni izrazi ... da je s toliko "čudnimi" liki mogoče nekaj nenavadnega razumeti in naučiti.

      1.    giskard je dejal

        Obstaja "stari" pregovor: "Imel sem težavo, odločil sem se za uporabo regularnih izrazov ... zdaj imam DVE težavi" 😉

        1.    KZKG ^ Gaara je dejal

          HAHAHAHAHAHAHA !!!
          Regularni izrazi nam lahko v določenem trenutku rešijo življenje ... ja, dolgo je, da se naučimo, kako jih uporabljati in ne umremo, ko poskušamo.

          Če bi ta ukaz poznal že pred leti, BOG !! kako preprosto bi bilo moje življenje 😀

          1.    giskard je dejal

            Jasno! Če jih dobro obvladate, so zelo zmogljivi. A včasih, kot pravite v tem primeru pri Perlu, ni treba iti tako daleč, če je zamenjava dovolj.
            Vseeno bi uporabil Python :)

    2.    dhunter je dejal

      Toda na žeji se mi zdi še bolj preprosto ... ali delam kaj narobe?

      sed -i "če / kaj-želim-spremeniti / kaj-novega-postaviti /" datoteko-v-katero-zamenjati

      1.    KZKG ^ Gaara je dejal

        heh heh ... in če želim "http://my.blog.com/content/" nadomestiti z "http://my.blog.com/uploads/files/" 😀 ... že imate postaviti \ s presledki in drugimi, in postane zapleteno ali ne?

        1.    dhunter je dejal

          Ni obvezno uporabljati / kot ločilo. Poglej s +

          sed -i «s + http: //my.blog.com/content/+http: //my.blog.com/uploads/files/+» datoteka

          1.    KZKG ^ Gaara je dejal

            O_O ... WTF!
            Zdaj ste mi odprli celo vesolje možnosti .. O_O

          2.    giskard je dejal

            Všeč so mi te objave, kjer se vsi nekaj naučimo 🙂
            Tudi tega nisem vedel.

  3.   RAW-osnovno je dejal

    Raje uporabljam neposredno vi ..

    Tako preprosto kot:
    :% s / us / moja družina / g

    % -> celoten dokument
    s -> iskanje
    g -> vse pojavitve

    Lep pozdrav ..

    1.    KZKG ^ Gaara je dejal

      Hvala!
      Nisem vedel, kako naj to storim z vi

  4.   st0rmt4il je dejal

    Dodano med priljubljene!

    Hvala!

  5.   DuranG je dejal

    Odličen vstop! V primeru, da koga zanima, enako z ukazom Linux sed: http://www.sysadmit.com/2015/07/linux-reemplazar-texto-en-archivos-con-sed.html

    1.    Dvomim je dejal

      In kaj se zgodi, če je v datoteki, kar želim zamenjati, narekovaji?
      Primer zamenjajte besedilo: »1 2 z besedilom:» XNUMX ″
      kako bi bil ukaz?

  6.   Percy salgado je dejal

    Pozdravljeni

    Želel sem zamenjati niz, ki je imel v sredini @ in je samo spremenil besedilo v at pred.

    besedilo za spremembo: Živel Peru
    novo besedilo: Viva mi patria @percysalgado
    Prikazano: Živela moja domovina

    Hvala za vašo pomoč

  7.   anonimni je dejal

    "\" Poševnico morate uporabiti pred znaki z dvojno uporabo @, #, tako da bodo interpretirani kot besedilo.

  8.   Gaba je dejal

    In kako to naredim v oknih ????