Ganti téks dina jero file ku ngan ukur hiji paréntah: perl

Dina kasempetan anu tangtu kami hoyong ngaganti téks dina file, contona, robih dina Dokumén.txt sagala hal anu "kulawarga kuring" sebutkeun pikeun "kami." Pikeun ngahontal ieu urang tiasa nganggo pangropéa téksu anu dipikaresep (Kate, Gedit, SublimeText, jsb) tapi sok hadé pikeun terang varian, cara sanés pikeun ngahontal hasil anu sami 🙂

Éta kajadian éta kalayan ungkapan biasa ieu tiasa kahontal, paréntah sed ngan saukur megah, éta ngagaduhan varian sareng pilihan anu sajajalan tapi ... pikeun anu ngan ukur hoyong ngaganti téks tina sahenteuna jalan kompléks mungkin, pikeun aranjeunna nyaéta yén kuring nyandak varian anu langkung saderhana ieu:

Nuturkeun conto na, urang gaduh file Dokumén.txt ayana di $ HOME / Dokumén.txt sareng téks ieu:

(...) kulawarga abdi éta sapertos sadayana, sapertos milik anjeun atanapi tatangga anjeun. Kanyataanna kulawarga abdi Kami nyobian janten jalma anu tanggung jawab sareng dina pandangan masarakat, sacara politis sareng sosial leres. Nanging, di bumi kuring aya domba hideung, sareng éta peran kuring HIRUP!. Kuring kantos janten jalma anu teu sieun nyarios naon anu anjeunna pikirkeun (sanaos henteu leres dina panon masarakat), sanaos nyatana kulawarga kuring bosen ku kokotor masarakat ayeuna.

Kalayan paréntah ieu anjeun bakal ngarobih «kulawarga abdi"ku"urang":

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

Éta saderhana 🙂

Janten téks na bakal:

(...) urang éta sapertos sadayana, sapertos milik anjeun atanapi tatangga anjeun. Kanyataanna urang Kami nyobian janten jalma anu tanggung jawab sareng dina pandangan masarakat, sacara politis sareng sosial leres. Nanging, di bumi kuring aya domba hideung, sareng éta peran kuring HIRUP!. Kuring kantos janten jalma anu teu sieun nyarios naon anu anjeunna pikirkeun (sanaos henteu leres dina panon masarakat), sanaos nyatana kulawarga kuring bosen ku kokotor masarakat ayeuna.

Sintaksisna nyaéta:

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

Paréntah sigana rada rumit, hayu urang guntingkeun sakedik sareng jelaskeun sakedikna langkung gampang 😉

  • perl : Naon anu bakal kami anggo, perl
  • -pi : Pí, kumaha π (nilai sakitar 3.14)
  • -e : E ngabayangkeun éta pikeun «e ngajalankeun» ^ - ^
  • Teras dina cutatan » urang buka ku s sareng urang tutup ku a g: "sg" … Bayangkeun S pikeun Mimitian sareng G pikeun Game Over 😀
  • Hurungkeun antara sg urang kedah nempatkeun dua sét kurung: [] y [], janten sapertos kitu: "S [] [] g"
  • Dina jero kurung munggaran sapertos anu kuring carioskeun di luhur, téks anu urang hoyong hapus sareng gentos anu énggal bakal angkat, sedengkeun dina sét kurung kadua téks anyar anu bakal dilebetkeun bakal nuturkeun conto ieu: "S [kulawarga kuring] [urang] g"

Sederhana sanés?

Katerangan saleresna langkung seueur tibatan anu diperyogikeun pikeun paréntah, lumayan saderhana ngartos 🙂

Perl seueur pisan, langkung ti ngan ukur cara pikeun ngaganti téks, éta mangrupikeun basa anu lengkep 😉

Upami anjeun hoyong terang langkung seueur ngeunaan éta, pasang iketna perl-doc sareng tingali kana whooodo naon anu diijinkeun, éta ngan semesta anu béda.

Ku jalan kitu sareng pikeun nutup, asumsina anjeun hoyong mendakan sadaya file .txt anu anjeun gaduh dina $ HOME / Documents / sareng dina masing-masing ganti "kulawarga kuring" ku "kami", anjeun tiasa gabung milarian + perl pikeun ngahontal ieu:

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

Atanapi nganggo kartu liar:

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

Masalah sareng varian kadua ieu, nyaéta yén éta moal ngagentos file anu aya dina subférder

Pokokna, kuring ngarepkeun anjeun pikaresepeun. Pikeun kuring éta leres-leres nguntungkeun, kuring parantos tiasa ngagentos téks langsung tina terminal ... hébat! 😀


Eusi tulisan taat kana prinsip urang tina étika éditorial. Pikeun ngalaporkeun kasalahan klik di dieu.

21 koméntar, tinggalkeun anjeun

Ninggalkeun koméntar anjeun

email alamat anjeun moal diterbitkeun. Widang diperlukeun téh ditandaan ku *

*

*

  1. Jawab data: Miguel Ángel Gatón
  2. Tujuan tina data: Kontrol SPAM, manajemén koméntar.
  3. Legitimasi: idin anjeun
  4. Komunikasi data: Data moal dikomunikasikan ka pihak katilu kacuali ku kawajiban hukum.
  5. Panyimpenan data: Basis data anu diayakeun ku Occentus Networks (EU)
  6. Hak: Iraha waé anjeun tiasa ngawatesan, cageur sareng mupus inpormasi anjeun.

  1.   booming cenahna

    Nya, kuring pikir seueur urang didieu terang paréntah sed, anu ngagaduhan tujuan anu sami, éta langkung saé na langkung gampang dianggo ...

    1.    KZKG ^ Gaara cenahna

      Hatur nuhun kana koméntar anjeun,
      Ngan ukur dua detil, naha anjeun nyarios yén sed ngajantenkeun langkung saé? Naha leres langkung gampang dianggo nganggo seueur karakter 'anéh'?

  2.   Federico A. Valdes Toujague cenahna

    Salam sadayana !!!. Kuring parantos ngagunakeun paréntah séd, sareng cara anu dijelaskeun di dieu ku perl langkung saderhana. Nuhun KZKG ^ Gaara !!!.

    1.    KZKG ^ Gaara cenahna

      Nuhun kana koméntar 🙂
      Nya, sahenteuna sigana kuring ieu langkung saderhana tibatan ungkapan biasa ... anu ku seueur karakter 'anéh', hal anu saleresna rumit pikeun dipikaharti sareng diajar tiasa dilakukeun pikeun anu henteu palinter.

      1.    giskard cenahna

        Aya pepatah «lami» di luar sana: «Kuring ngalaman masalah, kuring mutuskeun pikeun nganggo ungkapan Biasa ... ayeuna kuring gaduh DUA masalah» 😉

        1.    KZKG ^ Gaara cenahna

          HAHAHAHAHAHAHA !!!
          Ungkapan anu teratur tiasa nyalametkeun kahirupan urang dina hiji waktos ... enya, peryogi lami pikeun diajar kumaha ngagunakeunana sareng henteu pati nyobian.

          Upami kuring terang paréntah ieu sababaraha taun ka pengker, ALLAH !! kumaha saderhana hirup kuring bakal 😀

          1.    giskard cenahna

            Jelas! Ditangani kalayan leres aranjeunna kuat pisan 🙂 Teu aya anu langkung saé pikeun manipulasi téks. Tapi kadang, sapertos anu anjeun carioskeun dina hal ieu sareng Perl, anjeun henteu kedah jauh teuing upami gaganti parantos cekap.
            Abdi nganggo Python kitu ogé :)

    2.    dhunter cenahna

      Tapi dina haus kuring ningali éta langkung saderhana ... naha kuring ngalakukeun lepat?

      sed -i "upami / naon-Abdi-hoyong-ngarobih / anyar-pikeun-nempatkeun /" file-to-ngaganti

      1.    KZKG ^ Gaara cenahna

        heh heh ... sareng upami abdi hoyong ngagentos "http://my.blog.com/content/" ku "http://my.blog.com/uploads/files/" 😀 ... parantos aya anu parantos nempatkeun \ kalayan rohangan sareng anu sanésna, sareng janten rumit atanapi henteu?

        1.    dhunter cenahna

          Éta henteu wajib nganggo / salaku pamisah. Tingali sareng +

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

          1.    KZKG ^ Gaara cenahna

            O_O… WTF!
            Anjeun parantos muka sajagat pilihan pikeun kuring ayeuna .. O_O

          2.    giskard cenahna

            Abdi resep tulisan ieu dimana urang sadayana diajar hiji hal 🙂
            Abdi henteu terang éta ogé.

  3.   RAW-Dasar cenahna

    Abdi langkung resep nganggo langsung vi ..

    Sakumaha saderhana:
    :% s / urang / kulawarga kuring / g

    % -> sakabeh dokumén
    s -> milarian
    g -> sadaya kajadian

    Salam ..

    1.    KZKG ^ Gaara cenahna

      Gracias!
      Abdi henteu terang kumaha ngalakukeunana sareng vi

  4.   st0rmt4il cenahna

    Ditambahkeun kana paporit!

    Gracias!

  5.   n3 ribut cenahna
  6.   DuranG cenahna

    Éntri anu saé! Upami aya anu resep, sami sareng paréntah séd Linux: http://www.sysadmit.com/2015/07/linux-reemplazar-texto-en-archivos-con-sed.html

    1.    Mamang cenahna

      Sareng naon anu kajantenan upami dina file anu kuring badé gentos gaduh tanda petik?
      Conto ngagentoskeun anu nyarios téks: »1 ″ ku téks:» 2 ″
      kumaha paréntahna?

  7.   Percy salgado cenahna

    halo

    Abdi hoyong ngagentos senar anu aya @ di tengahna sareng ngan ukur ngarobih téks na sateuacan di.

    téks pikeun ngarobih: Hidup Peru
    téks anyar: Viva mi patria @percysalgado
    Ditémbokeun: Hidup di tanah air abdi

    Nuhun kana bantosanana

  8.   henteu aya namina cenahna

    "\" Anjeun kedah nganggo garis miring sateuacan karakter nganggo dobel @, #, supados ditarjamahkeun salaku téks.

  9.   GABA cenahna

    Sareng kumaha kuring ngalakukeunana dina windows ????