Asendage tekst failides ainult ühe käsuga: perl

Teatud juhtudel soovime teksti failis asendada, näiteks muuta faili Document.txt kõik, mida "minu pere" ütleb "meie" eest. Selle saavutamiseks võime kasutada eelistatud tekstiredaktorit (Kate, Gedit, SublimeText jne), kuid alati on hea teada variante, muid võimalusi sama tulemuse saavutamiseks

See juhtub, et koos regulaarsed väljendid selle saavutate, sed-käsk on lihtsalt suurepärane, sellel on lõputud variandid ja võimalused, kuid ... neile, kes soovivad lihtsalt asendada teksti võimalikult keeruline, nende jaoks on see, et ma toon selle palju lihtsama variandi:

Eeskuju järgides on meil fail olemas Document.txt asub $ HOME / Document.txt järgmise tekstiga:

(...) minu perekond See on nagu kõik need, nagu teie või teie naabri oma. Tegelikult minu perekond Püüame olla vastutustundlikud inimesed ja ühiskonna silmis poliitiliselt ja sotsiaalselt korrektsed. Minu majas on siiski must lammas ja see on minu roll LOL! Olen alati olnud see, kes ei karda öelda, mida arvab (kuigi see pole ühiskonna silmis ilmselt õige), kuigi tegelikult on mu perel kõrini mustus tänapäeva ühiskond.

Järgmise käsuga muudate «minu perekond" kõrval "meile":

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

Nii lihtne see ongi 🙂

Nii et tekst oleks:

(...) meile See on nagu kõik need, nagu teie või teie naabri oma. Tegelikult meile Püüame olla vastutustundlikud inimesed ja ühiskonna silmis poliitiliselt ja sotsiaalselt korrektsed. Minu majas on siiski must lammas ja see on minu roll LOL! Olen alati olnud see, kes ei karda öelda, mida arvab (kuigi see pole ühiskonna silmis ilmselt õige), kuigi tegelikult on mu perel kõrini mustus tänapäeva ühiskond.

Süntaks on:

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

Käsk võib tunduda natuke keeruline, lagundame selle natuke ja selgitame seda veidi lihtsamalt 😉

  • perl : Mida me kasutame, perl
  • -pi : Pí, kuidas π (ligikaudne väärtus 3.14)
  • -e : E kujutab ette, et «e täidaks» ^ - ^
  • Siis jutumärkides » avame a-ga s ja lõpetame a g: "sg" ... Kujutage ette, et S on Start ja G - mängu lõpp 😀
  • Pöörake sg peame panema kaks sulgude komplekti: [] y [], olles nii: "S [] [] g"
  • Esimeste sulgude sees, nagu ma eespool ütlesin, läheb tekst, mille soovime eemaldada ja asendada uuega, samas kui teises sulgudes saab uue teksti panna, järgides eeskuju: "S [minu pere] [me] g"

Lihtne, kas pole?

Seletus on tegelikult palju ulatuslikum kui käsu jaoks vajalik, seda on üsna lihtne mõista 🙂

Perl on palju, palju enamat kui lihtsalt viis teksti asendamiseks, see on terve keel 😉

Kui soovite selle kohta lisateavet, installige pakett perl-doc ja heida pilk sellele, mida see lubab, see on lihtsalt teine ​​universum.

Muide ja sulgemiseks, eeldades, et soovite leida kõik .txt-failid, mis teil on rakenduses $ HOME / Documents / ja asendada mõlema sõna "minu pere" sõnaga "meie", võite selle saavutamiseks liituda otsingu + perl abil:

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

Või asendusmärgi abil:

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

Selle teise variandi probleem on see, et see ei asenda alamkaustades olevaid faile 🙂

Igatahes loodan, et teile tundus see huvitav. Minu jaoks on see tõeliselt kasulik olnud, saan teksti juba terminalist vahetada ... super! 😀


Jäta oma kommentaar

Sinu e-postiaadressi ei avaldata. Kohustuslikud väljad on tähistatud *

*

*

  1. Andmete eest vastutab: Miguel Ángel Gatón
  2. Andmete eesmärk: Rämpsposti kontrollimine, kommentaaride haldamine.
  3. Seadustamine: teie nõusolek
  4. Andmete edastamine: andmeid ei edastata kolmandatele isikutele, välja arvatud juriidilise kohustuse alusel.
  5. Andmete salvestamine: andmebaas, mida haldab Occentus Networks (EL)
  6. Õigused: igal ajal saate oma teavet piirata, taastada ja kustutada.

  1.   buum DIJO

    Ma arvan, et paljud meist siin teavad sed-i käsku, mis täidab sama eesmärki, muudab selle palju paremaks ja seda on lihtsam kasutada ...

    1.    KZKG ^ Gaara DIJO

      Täname kommentaari eest,
      Ainult kaks detaili, miks te ütlete, et sed muudab selle paremaks? Kas seda on tõesti lihtsam kasutada nii paljude „imelike” tegelastega?

  2.   Federico A. Valdes Toujague DIJO

    Tervitused kõigile !!!. Olen käsku kasutanud januja siin perliga kirjeldatud meetod on lihtsam. Aitäh KZKG ^ Gaara !!!.

    1.    KZKG ^ Gaara DIJO

      Aitäh kommentaari eest 🙂
      Noh, vähemalt minu jaoks tundub see lihtsam kui tavalised väljendid ... et nii paljude „imelike” tegelaskujudega saab mittetarkadele teha midagi tõeliselt keerulist, et seda mõista ja õppida.

      1.    giskard DIJO

        Seal on «vana» ​​kõnekäänd: «Mul oli probleem, otsustasin kasutada regulaaravaldisi ... nüüd on mul KAKS probleemi» 😉

        1.    KZKG ^ Gaara DIJO

          HAHAHAHAHAHAHA !!!
          Regulaarsed väljendid võivad teatud hetkel meie elu päästa ... jah, nende kasutamise õppimine ja mitte proovimisse suremine võtab kaua aega.

          Kui ma oleks seda käsku juba aastaid tagasi teadnud, siis JUMAL !! kui lihtne mu elu oleks olnud 😀

          1.    giskard DIJO

            Selge! Hästi käsitsetavad, nad on väga võimsad text Tekstiga manipuleerimiseks pole midagi paremat. Kuid mõnikord, nagu te sel juhul Perliga ütlete, ei pea te nii kaugele minema, kui asendajast piisab.
            Ma oleksin nagunii Pythoni kasutanud :)

    2.    dhunter DIJO

      Aga janu näen seda veelgi lihtsamalt ... kas ma teen midagi valesti?

      sed -i "jah / mida-ma tahan muuta / uus-panna-faili" "fail-millesse asendada

      1.    KZKG ^ Gaara DIJO

        heh heh ... ja kui ma tahan asendada "http://my.blog.com/content/" sõnaga "http://my.blog.com/uploads/files/" 😀 ... siis juba olemas panna tühikute ja teistega ning see muutub keerukaks või mitte?

        1.    dhunter DIJO

          Eraldajana pole kohustuslik kasutada /. Vaadake + -ga

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

          1.    KZKG ^ Gaara DIJO

            O_O ... WTF!
            Olete mulle nüüd terve universumi võimalusi avanud .. O_O

          2.    giskard DIJO

            Mulle meeldivad need postitused, kus me kõik midagi õpime 🙂
            Ma ei teadnud ka seda.

  3.   RAW-Basic DIJO

    Eelistan kasutada otse vi ..

    Nii lihtne kui:
    :% s / us / minu pere / g

    % -> kogu dokument
    s -> otsi
    g -> kõik esinemised

    Tervitused ..

    1.    KZKG ^ Gaara DIJO

      Aitäh!
      Ma ei teadnud, kuidas seda vi-ga teha

  4.   st0rmt4il DIJO

    Lisatud lemmikute hulka!

    Aitäh!

  5.   DuranG DIJO

    Suurepärane sissekanne! Juhul, kui keegi on huvitatud, sama ka Linux sed käsuga: http://www.sysadmit.com/2015/07/linux-reemplazar-texto-en-archivos-con-sed.html

    1.    Kahtlemine DIJO

      Ja mis juhtub, kui failis, mida ma tahan asendada, on jutumärgid?
      Näide teksti asendava teksti asendamiseks: »1 ″ tekstiga:» 2 ″
      kuidas käsk oleks?

  6.   Percy salgado DIJO

    Tere

    Tahtsin asendada stringi, mille keskel oli @ ja mis muutis teksti ainult at-i ette.

    muudetav tekst: elagu Peruu
    uus tekst: Viva mi patria @percysalgado
    Näidatud: Elagu mu kodumaa

    Tänan abi eest

  7.   anonüümne DIJO

    "\" Peate kasutama kaldkriipsu enne kahekordset kasutamist tähemärkide @, # abil, et neid tõlgendataks tekstina.

  8.   GABA DIJO

    Ja kuidas ma seda aknades saan teha ????