د فایلونو دننه متن یوازې د یوې قوماندې سره بدل کړئ: perl

په ځینې وختونو کې موږ غواړو چې متن په فایل کې ځای په ځای کړو ، د مثال په توګه ، په کې تغیرات لاسوند هرڅه چې "زما کورنۍ" د "زموږ لپاره" وايي. د دې ترلاسه کولو لپاره موږ کولی شو زموږ غوره شوي متن ایډیټر وکاروو (کیټ ، ګیډیټ ، سبیل ټیکسټ ، او داسې نور) مګر دا تل ښه ده چې تغیرات وپیژنئ ، ورته ورته پایلې ترلاسه کولو لپاره نورې لارې 🙂

دا د دې سره پیښیږي منظم څرګندونې دا ترلاسه کیدی شي ، د سیډ کمانډ په ساده ډول عالي دی ، دا نه ختمیدونکي ډولونه او اختیارونه لري مګر ... د هغو کسانو لپاره چې غواړي یوازې د متن څخه ځای په ځای کړي لږترلږه پیچلې لاره ممکنه، د دوی لپاره دا دی چې زه دا خورا ساده بiantه لرم:

د مثال په تعقیب ، موږ فایل لرو لاسوند کې موقعیت لري OME کور / سند د لاندې متن سره:

(...) زما کورنۍ دا د ټولو په څیر دی ، لکه ستاسو یا ستاسو د ګاونډي په څیر. په حقیقت کی زما کورنۍ موږ هڅه کوو چې مسؤل خلک او د ټولنې په نظر کې ، له سیاسي او ټولنیز پلوه سم وي. په هرصورت ، زما په کور کې تور پسه شتون لري ، او دا زما رول LOL دی! زه تل یو څوک یم چې د هغه څه په ویلو نه ډاریږي چې هغه څه فکر کوي (حتی که دا په څرګنده د ټولنې په نظر کې سمه نه وي) ، که څه هم په حقیقت کې زما کورنۍ د دې سره تنګ شوې چټل نننۍ ټولنه.

د لاندې قوماندې سره به تاسو بدل شي «زما کورنۍ"لخوا"موږ":

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

دا دومره ساده ده

نو دا متن به وي:

(...) موږ دا د ټولو په څیر دی ، لکه ستاسو یا ستاسو د ګاونډي په څیر. په حقیقت کی موږ موږ هڅه کوو چې مسؤل خلک او د ټولنې په نظر کې ، له سیاسي او ټولنیز پلوه سم وي. په هرصورت ، زما په کور کې تور پسه شتون لري ، او دا زما رول LOL دی! زه تل یو څوک یم چې د هغه څه په ویلو نه ډاریږي چې هغه څه فکر کوي (حتی که دا په څرګنده د ټولنې په نظر کې سمه نه وي) ، که څه هم په حقیقت کې زما کورنۍ د دې سره تنګ شوې چټل نننۍ ټولنه.

ترکیب په لاندې ډول دی:

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

کمانډ ممکن یو څه پیچلی ښکاري ، راځئ چې دا یو څه مات کړو او یو څه نور په ساده ډول تشریح کړو 😉

  • پریل : څه چې موږ به وکاروو ، پرل
  • -پی : Pí ، څنګه π (د 3.14 نږدې ارزښت)
  • -e : ای د دې لپاره د «ای د عملي کولو لپاره تصور کوي ^ - ^
  • بیا په قیمتونو کې » موږ د s او موږ د g: "سګ" ... د پیل لپاره د ایس لپاره او د لوبو لپاره د جی لپاره تصور وکړئ
  • تر منځ وګرځه sg موږ باید د بریکٹ دوه سیټونه ولیکو: [] y []د دې لارې پاتې کیدل: "S [] [] g"
  • د لومړي بریکٹونو دننه لکه څنګه چې ما پورته وویل ، هغه متن چې موږ یې د نوي سره ایستل او ځای په ځای کول غواړو هغه به لاړ شي ، پداسې حال کې چې د بریکٹونو په دوهم سیټ کې به نوی متن لاړ شي ، د مثال په تعقیب: "S [زما کورنۍ] [موږ] g"

ساده نه دی؟

توضیحي واقعیا د هغه څه په پرتله خورا پراخه ده چې د قوماندې لپاره اړین دي ، د پوهیدلو لپاره خورا ساده دی

پرل خورا ډیر دی ، د متن ځای په ځای کولو لپاره یوازې د یوې لارې څخه ، دا یوه ټوله ژبه ده 😉

که تاسو غواړئ د دې په اړه نور معلومات ترلاسه کړئ ، کڅوړه نصب کړئ پرل - ډیک او یو څه وګورئ چې ووډو څه اجازه ورکوي ، دا یوازې یو مختلف کائنات دی.

د لارې او بندولو سره ، فرض کول چې تاسو غواړئ ټولې .txt فایلونه ومومئ چې تاسو یې په OME کور / سند / کې لرئ او په هر یو کې "زما کورنۍ" د "موږ" سره ځای په ځای کوئ ، تاسو کولی شئ د دې لاسته راوړلو لپاره + پریل کې ګډون وکړئ:

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

یا د وائلډ کارډ کارول:

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

د دې دویم تغیر سره ستونزه دا ده چې دا به په فایلونو کې ځای په ځای نه کړي چې په فرعي فولډرونو کې دي 🙂

په هرصورت ، زه امید لرم چې تاسو دا په زړه پوري ومومئ. زما لپاره دا واقعیا ګټور دی ، زه دمخه کولی شم مستقیم له ټرمینل څخه متن بدل کړم ... عالي! 😀


د مقالې مینځپانګه زموږ د اصولو سره سمون لري ایډیټیک اخلاق. د غلطۍ راپور ورکولو لپاره کلیک وکړئ دلته.

21 نظرونه ، خپل پریږدئ

خپله نظر پرېږدئ

ستاسو د بریښنا لیک پته به خپره نه شي.

*

*

  1. د معلوماتو لپاره مسؤل: میګیوانجل ګاتین
  2. د معلوماتو هدف: د سپیم کنټرول ، د نظر مدیریت.
  3. قانونیت: ستاسو رضایت
  4. د معلوماتو راټولول: معلومات به د قانوني مکلفیت پرته دریمې ډلې ته نه لیږدول کیږي.
  5. د معلوماتو ذخیره: ډیټابیس د Occentus شبکې (EU) لخوا کوربه شوی
  6. حقونه: په هر وخت کې تاسو کولی شئ خپل معلومات محدود ، له سره تنظیم او حذف کړئ.

  1.   بوم dijo

    ښه ، زه فکر کوم چې دلته زموږ څخه ډیری د سیډ کمانډ پیژني ، کوم چې ورته هدف ترسره کوي ، دا خورا ښه ترسره کوي او کارول یې اسانه دي ...

    1.    KZKG ^ ګارا dijo

      ستاسو له نظره مننه ،
      یوازې دوه توضیحات ، تاسو ولې وایاست چې سیډ غوره کوي؟ ایا د ډیری "عجیب" کرکټرونو سره کار کول واقعیا اسانه دي؟

  2.   فیدریکو الف. ویلډز توجګ dijo

    ټولو ته سلام !!! ما کمانډ کارولی دی سل، او هغه میتود چې دلته د پریل سره تشریح شوی خورا اسانه دی. مننه KZKG ^ ګارا !!!.

    1.    KZKG ^ ګارا dijo

      د نظر لپاره مننه 🙂
      ښه ، لږترلږه زما لپاره دا د منظم څرګندونو په پرتله ساده ښکاري ... چې د ډیری 'عجیب' کرکټرونو سره ، یو څه چې واقعیا پیچلي وي د پوهیدلو او زده کړې لپاره غیر محافظ ته ترسره کیدی شي.

      1.    ګیسکارډ dijo

        دلته یو "زوړ" متل دی: "ما یوه ستونزه درلوده ، ما پریکړه وکړه چې منظمې څرګندونې وکاروم ... اوس زه د TWO ستونزې لرم" 😉

        1.    KZKG ^ ګارا dijo

          هاهاهاهاها !!!
          منظم څرګندونې کولی شي زموږ ژوند په ټاکلي وخت کې خوندي کړي ... هو ، دا ډیر وخت نیسي ترڅو د دوی د کارولو څرنګوالي زده کړه وکړي او په هڅه کې مړ نشي.

          که زه دا قوماندې کلونه مخکې پیژندلم ، خدای !! زما ژوند به څومره ساده وای 😀

          1.    ګیسکارډ dijo

            روښانه! ښه سمبال شوي دوی خورا پیاوړي دي text د متن په لاسوهنه کولو کې هیڅ غوره نه دي. مګر ځینې وختونه ، لکه څنګه چې تاسو د پرل سره پدې قضیه کې وایاست ، تاسو اړتیا نلرئ لرې لاړشئ که چیرې یو ځای کافي وي.
            زه به په هرصورت Python کارولی وي :)

    2.    ډانټر dijo

      مګر په تنده کې زه دا خورا ساده ګورم ... ایا زه کوم غلط کار کوم؟

      sed -i "که / څه- I-to-to-change / new-to-put /" فایل-په-کې-چې ځای په ځای شي

      1.    KZKG ^ ګارا dijo

        هه هه ... او که زه غواړم د "http://my.blog.com/content/" د "http://my.blog.com/uploads/files/" لخوا بدل کړم already لا دمخه تاسو باید ځایونه او نور سره ځای په ځای کړئ. ، او دا پیچلي کیږي یا نه؟

        1.    ډانټر dijo

          دا اړینه نده چې د جلا کونکي په توګه وکاروئ. سره + وګوره

          sed -i «s + http: //my.blog.com/content/+http: //my.blog.com/uploads/files/+» فایل

          1.    KZKG ^ ګارا dijo

            O_O ... WTF!
            تاسو اوس زما لپاره د انتخابونو ټول کائنات خلاص کړی دی .. O_O

          2.    ګیسکارډ dijo

            زه دا پوسټونه خوښوم چیرې چې موږ ټول یو څه زده کوو 🙂
            زه هم نه پوهیږم

  3.   RAW- اساسی dijo

    زه غوره ګ viم چې مستقیم vi ..

    هغومره ساده:
    :٪ s / موږ / زما کورنۍ / g

    ٪ -> بشپړ لاسوند
    s -> لټون
    g -> ټولې پېښې

    سلامونه

    1.    KZKG ^ ګارا dijo

      Gracias!
      زه نه پوهیدم چې دا څنګه د vi سره ترسره کړم

  4.   st0rmt4il dijo

    په خوښیو کې اضافه شوي!

    Gracias!

  5.   n3 طوفان dijo

    دې ته یو نظر وګورئ که تاسو د rpl کمانډ یو څه لرئ

    http://microbuffer.wordpress.com/2011/02/28/rpl-buscar-y-reemplazar-strings-en-linux-unix/

  6.   درنګ dijo

    عالي ننوتل! که چیرې څوک علاقه ولري نو د لینکس سیډ کمانډ سره ورته وي: http://www.sysadmit.com/2015/07/linux-reemplazar-texto-en-archivos-con-sed.html

    1.    شک کول dijo

      او څه پیښ شي که د فایل دننه هغه څه چې زه یې غواړم ځای په ځای یې کړم؟
      مثال د هغه څه په ځای کولو کې چې متن وايي: »1 text د متن په واسطه:» 2 ″
      امر به څنګه وي؟

  7.   پرسي سالګادو dijo

    هاله

    ما غوښتل هغه تار بدل کړم چې یو یې @ په مینځ کې درلود او یوازې د مخه د متن لخوا د متن بدل شوی.

    د بدلولو لپاره متن: ویوا ایل پیری
    نوی متن: ویوا ما پیټرییاpercysalgado
    ښودل شوي: زما د وطن اوږد ژوند وکړئ

    ستاسو د مرستي نه مننه

  8.   نوم dijo

    "\" تاسو باید سلیش د مخه د کرکټرونو سره د @ ، # ، دوه ځله کارولو سره وکاروئ ، ترڅو دوی د متن په توګه تشریح شي.

  9.   ایروین dijo

    او زه دا په وینډوز کې څنګه وکړم؟ ؟؟؟؟

bool (ریښتیا)