ជំនួសអត្ថបទនៅខាងក្នុងឯកសារដោយប្រើពាក្យបញ្ជាតែមួយប៉ុណ្ណោះ: perl

ក្នុងករណីខ្លះយើងចង់ជំនួសអត្ថបទនៅក្នុងឯកសារឧទាហរណ៍ផ្លាស់ប្តូរ ឯកសារ.txt អ្វីគ្រប់យ៉ាងដែល "គ្រួសាររបស់ខ្ញុំ" និយាយថាសម្រាប់យើង។ ដើម្បីសំរេចគោលដៅនេះយើងអាចប្រើកម្មវិធីនិពន្ធអត្ថបទដែលយើងពេញចិត្ត (ខេត, ហ្គេដឌីត, SublimeText ។ ល។ ) ប៉ុន្តែវាតែងតែល្អដើម្បីស្គាល់វ៉ារ្យ៉ង់វិធីផ្សេងទៀតដើម្បីទទួលបានលទ្ធផលដូចគ្នា🙂

វាកើតឡើងថាជាមួយ កន្សោមធម្មតា អ្នកអាចសំរេចបាននេះពាក្យបញ្ជា sed ពិតជាអស្ចារ្យណាស់វាមានបំរែបំរួលនិងជំរើសមិនចេះចប់ប៉ុន្តែសំរាប់អ្នកដែលគ្រាន់តែចង់ជំនួសអត្ថបទពី វិធីស្មុគស្មាញតិចបំផុតអាចធ្វើទៅបានសម្រាប់ពួកគេវាគឺថាខ្ញុំនាំមកនូវវ៉ារ្យ៉ង់សាមញ្ញជាងនេះ៖

ធ្វើតាមឧទាហរណ៍យើងមានឯកសារ ឯកសារ.txt ដែលមានទីតាំងនៅ $ គេហដ្ឋាន / Document.txt ជាមួយអត្ថបទដូចខាងក្រោមៈ

(... ) គ្រួសារ​របស់ខ្ញុំ វាដូចជារបស់ទាំងអស់ដូចជារបស់អ្នកឬអ្នកជិតខាងរបស់អ្នក។ តាមពិត គ្រួសារ​របស់ខ្ញុំ យើងព្យាយាមធ្វើជាមនុស្សដែលមានទំនួលខុសត្រូវនិងក្នុងសង្គមសង្គមនិងនយោបាយត្រឹមត្រូវ។ ទោះយ៉ាងណាក៏ដោយនៅក្នុងផ្ទះរបស់ខ្ញុំមានចៀមខ្មៅហើយនោះគឺជាតួនាទីរបស់ខ្ញុំអិលអូ! ។ ខ្ញុំតែងតែជាមនុស្សម្នាក់ដែលមិនខ្លាចនិយាយអ្វីដែលគាត់គិត (ទោះបីជាវាមិនត្រឹមត្រូវតាមក្រសែភ្នែកនៃសង្គមក៏ដោយ) ទោះបីជាការពិតគ្រួសាររបស់ខ្ញុំបានហត់នឿយនឹង ភាពកខ្វក់ សង្គមសព្វថ្ងៃ។

ដោយប្រើពាក្យបញ្ជាខាងក្រោមអ្នកនឹងផ្លាស់ប្តូរ«គ្រួសារ​របស់ខ្ញុំ"ដោយ"យើង«៖

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

វាសាមញ្ញហើយ

ដូច្នេះអត្ថបទនឹងមានៈ

(... ) យើង វាដូចជារបស់ទាំងអស់ដូចជារបស់អ្នកឬអ្នកជិតខាងរបស់អ្នក។ តាមពិត យើង យើងព្យាយាមធ្វើជាមនុស្សដែលមានទំនួលខុសត្រូវនិងក្នុងសង្គមសង្គមនិងនយោបាយត្រឹមត្រូវ។ ទោះយ៉ាងណាក៏ដោយនៅក្នុងផ្ទះរបស់ខ្ញុំមានចៀមខ្មៅហើយនោះគឺជាតួនាទីរបស់ខ្ញុំអិលអូ! ។ ខ្ញុំតែងតែជាមនុស្សម្នាក់ដែលមិនខ្លាចនិយាយអ្វីដែលគាត់គិត (ទោះបីជាវាមិនត្រឹមត្រូវតាមក្រសែភ្នែកនៃសង្គមក៏ដោយ) ទោះបីជាការពិតគ្រួសាររបស់ខ្ញុំបានហត់នឿយនឹង ភាពកខ្វក់ សង្គមសព្វថ្ងៃ។

វាក្យសម្ព័ន្ធគឺ៖

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

ពាក្យបញ្ជានេះហាក់ដូចជាស្មុគស្មាញបន្តិចសូមយើងបំបែកវាបន្តិចហើយពន្យល់វាអោយកាន់តែសាមញ្ញ😉

  • perl : អ្វីដែលយើងនឹងប្រើ, perl
  • -ភី : ភី, របៀប π (តម្លៃប្រហាក់ប្រហែល ៣.១៤)
  • -e : អ៊ីស្រមៃថាវាសម្រាប់«អ៊ីដើម្បីប្រតិបត្តិ» ^ - ^
  • បន្ទាប់មកនៅក្នុងសម្រង់ » យើងបើកជាមួយ s ហើយយើងបិទជាមួយ g: "sg" …ស្រមៃថាអេសសម្រាប់ការចាប់ផ្តើមនិងជីសម្រាប់ហ្គេមលើ😀
  • បត់រវាង sg យើងត្រូវដាក់តង្កៀបពីរឈុត៖ [] y []ដោយវិធីនោះ៖ "ស [] [] ក្រាម"
  • នៅខាងចុងដង្កៀបទីមួយដូចដែលខ្ញុំបាននិយាយខាងលើអត្ថបទដែលយើងចង់ដកចេញនិងជំនួសដោយអក្សរថ្មីមួយនឹងទៅហើយខណៈពេលដែលតង្កៀបទី ២ អត្ថបទថ្មីដែលត្រូវដាក់នឹងទៅដោយធ្វើតាមឧទាហរណ៍៖ "S [គ្រួសារខ្ញុំ] [យើង] ក្រាម"

ធម្មតាមែនទេ?

ការពន្យល់ពិតជាមានលក្ខណៈទូលំទូលាយជាងអ្វីដែលចាំបាច់សម្រាប់ពាក្យបញ្ជាវាពិតជាងាយយល់🙂

Perl គឺមានច្រើនណាស់ក្រៅពីវិធីជំនួសអត្ថបទវាជាភាសាទាំងមូល😉

ប្រសិនបើអ្នកចង់ស្វែងយល់បន្ថែមអំពីវាសូមតំឡើងកញ្ចប់ perl- ឯកសារ ហើយក្រឡេកមើលវ៉ូដូដូនូវអ្វីដែលវាអនុញ្ញាតវាគ្រាន់តែជាសកលលោកខុសគ្នា។

និយាយនិងបិទអ្នកសន្មតថាអ្នកចង់រកឯកសារ .txt ទាំងអស់ដែលអ្នកមាននៅក្នុង $ HOME / ឯកសារ / ហើយនៅក្នុងឯកសារនីមួយៗជំនួស "គ្រួសារខ្ញុំ" ជាមួយ "យើង" អ្នកអាចចូលរួមក្នុងការស្វែងរក + perl ដើម្បីសំរេចបាននេះ៖

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

បញ្ហាជាមួយវ៉ារ្យ៉ង់ទីពីរនេះគឺថាវានឹងមិនជំនួសនៅក្នុងឯកសារដែលមាននៅក្នុងថតរង🙂ទេ

ទោះយ៉ាងណាខ្ញុំសង្ឃឹមថាអ្នកបានរកឃើញថាវាគួរឱ្យចាប់អារម្មណ៍។ សម្រាប់ខ្ញុំវាពិតជាមានប្រយោជន៍ខ្ញុំអាចជំនួសអត្ថបទដោយផ្ទាល់ពីស្ថានីយរួចហើយ ... អស្ចារ្យ! 😀


ខ្លឹមសារនៃអត្ថបទប្រកាន់ខ្ជាប់នូវគោលការណ៍របស់យើង ក្រមសីលធម៌វិចារណកថា។ ដើម្បីរាយការណ៍ការចុចកំហុស នៅទីនេះ.

៥៧ យោបល់ទុកអ្នក

ទុកឱ្យយោបល់របស់អ្នក

អាសយដ្ឋានអ៊ីមែលរបស់អ្នកនឹងមិនត្រូវបានបោះពុម្ភ។ អ្នកគួរតែអនុវត្តតាម *

*

*

  1. ទទួលខុសត្រូវចំពោះទិន្នន័យ: មីហ្គែល - ហ្គែលហ្គេតថន
  2. គោលបំណងនៃទិន្នន័យ៖ គ្រប់គ្រង SPAM ការគ្រប់គ្រងមតិយោបល់។
  3. ភាពស្របច្បាប់៖ ការយល់ព្រមរបស់អ្នក
  4. ការប្រាស្រ័យទាក់ទងទិន្នន័យ៖ ទិន្នន័យនឹងមិនត្រូវបានទាក់ទងទៅភាគីទីបីឡើយលើកលែងតែកាតព្វកិច្ចផ្នែកច្បាប់។
  5. ការផ្ទុកទិន្នន័យ៖ មូលដ្ឋានទិន្នន័យដែលរៀបចំដោយបណ្តាញ Occentus (EU)
  6. សិទ្ធិ៖ នៅពេលណាដែលអ្នកអាចដាក់កម្រិតទាញយកមកវិញនិងលុបព័ត៌មានរបស់អ្នក។

  1.   ការរីកចំរើន dijo

    អញ្ចឹងខ្ញុំគិតថាពួកយើងជាច្រើននៅទីនេះដឹងពីពាក្យបញ្ជា sed ដែលបម្រើគោលបំណងដូចគ្នាធ្វើអោយវាកាន់តែប្រសើរនិងងាយស្រួលប្រើ ...

    1.    KZKG ^ ហ្គារ៉ា dijo

      សូមអរគុណសម្រាប់ការអត្ថាធិប្បាយរបស់អ្នក,
      គ្រាន់តែព័ត៌មានលម្អិតពីរហេតុអ្វីអ្នកនិយាយថា sed ធ្វើឱ្យវាប្រសើរជាងមុន? តើវាពិតជាងាយស្រួលប្រើជាមួយតួអក្សរចំលែកច្រើនទេ?

  2.   Federico A. Valdes Toujague dijo

    ជូនពរដល់អ្នកទាំងអស់គ្នា !!! ។ ខ្ញុំបានប្រើពាក្យបញ្ជា sedនិងវិធីសាស្រ្តដែលបានពិពណ៌នានៅទីនេះជាមួយ perl គឺសាមញ្ញជាង។ សូមអរគុណ KZKG ^ ហ្គារ៉ា !!! ។

    1.    KZKG ^ ហ្គារ៉ា dijo

      សូមអរគុណសម្រាប់មតិយោបល់🙂
      ជាការប្រសើរណាស់យ៉ាងហោចណាស់វាហាក់ដូចជាខ្ញុំនេះគឺជារឿងសាមញ្ញជាងការបង្ហាញធម្មតា ... ថាជាមួយនឹងតួអក្សរចំលែក ៗ ជាច្រើនអ្វីដែលពិតជាស្មុគស្មាញក្នុងការយល់និងរៀនអាចត្រូវបានធ្វើចំពោះអ្នកដែលមិនចេះស្ទាត់។

      1.    ជីស្កាដ dijo

        មាន adage «ចាស់»នៅទីនោះ៖ «ខ្ញុំមានបញ្ហាខ្ញុំសំរេចចិត្តប្រើកន្សោមធម្មតា ... ឥឡូវខ្ញុំមានបញ្ហាពីរ»😉

        1.    KZKG ^ ហ្គារ៉ា dijo

          ហាហាហាហាហាហា !!!
          ការបញ្ចេញមតិទៀងទាត់អាចជួយសង្គ្រោះជីវិតយើងនៅចំណុចជាក់លាក់មួយ ... មែនហើយវាត្រូវចំណាយពេលយូរដើម្បីរៀនពីរបៀបប្រើវាហើយមិនស្លាប់ដោយព្យាយាម។

          ប្រសិនបើខ្ញុំបានស្គាល់បទបញ្ជានេះច្រើនឆ្នាំកន្លងមកហើយនោះព្រះ !! តើជីវិតខ្ញុំសាមញ្ញប៉ុណ្ណា?

          1.    ជីស្កាដ dijo

            ច្បាស់ហើយ! ដោះស្រាយបានល្អពួកគេមានអានុភាពខ្លាំងណាស់🙂គ្មានអ្វីប្រសើរជាងក្នុងការរៀបចំអត្ថបទ។ ប៉ុន្តែពេលខ្លះដូចដែលអ្នកនិយាយក្នុងករណីនេះជាមួយភែលអ្នកមិនចាំបាច់ទៅឆ្ងាយទេប្រសិនបើអ្នកជំនួសបានគ្រប់គ្រាន់។
            ទោះយ៉ាងណាខ្ញុំនឹងបានប្រើ Python :)

    2.    អ្នកប្រមាញ់ dijo

      ប៉ុន្តែនៅក្នុងការស្រេកឃ្លានខ្ញុំឃើញវាកាន់តែសាមញ្ញ ... តើខ្ញុំកំពុងធ្វើអ្វីខុសទេ?

      sed -i "ប្រសិនបើ / អ្វីដែលខ្ញុំចង់ផ្លាស់ប្តូរ / ឯកសារថ្មីទៅដាក់ /" ដែលត្រូវជំនួស

      1.    KZKG ^ ហ្គារ៉ា dijo

        ហេហេ ... ហើយបើខ្ញុំចង់ជំនួស "http://my.blog.com/content/" ដោយ "http://my.blog.com/uploads/files/" 😀 ... អ្នកមានហើយ ដាក់ ​​\ ដកឃ្លានិងកន្លែងផ្សេងទៀតហើយវាស្មុគស្មាញរឺអត់?

        1.    អ្នកប្រមាញ់ dijo

          វាមិនចាំបាច់ប្រើ / ជាអ្នកបំបែកទេ។ រកមើលជាមួយ +

          sed -i « s + http: //my.blog.com/content/+http: //my.blog.com/uploads/files/+ »ឯកសារ

          1.    KZKG ^ ហ្គារ៉ា dijo

            O_O… WTF!
            អ្នកបានបើកសកលលោកទាំងមូលនៃជម្រើសសម្រាប់ខ្ញុំឥឡូវនេះ .. អូ

          2.    ជីស្កាដ dijo

            ខ្ញុំចូលចិត្តប្រកាសទាំងនេះដែលយើងទាំងអស់គ្នារៀនអ្វីមួយ🙂
            ខ្ញុំក៏មិនដឹងដែរ។

  3.   RAW-មូលដ្ឋាន dijo

    ខ្ញុំចូលចិត្តប្រើវី។

    សាមញ្ញដូចជាៈ
    :% s / ពួកយើង / គ្រួសារខ្ញុំ / ក្រាម

    % -> ឯកសារទាំងមូល
    s -> ស្វែងរក
    g -> ការកើតឡើងទាំងអស់

    ស្វាគមន៍ ..

    1.    KZKG ^ ហ្គារ៉ា dijo

      សូមអរគុណ!
      ខ្ញុំមិនដឹងពីរបៀបធ្វើវាជាមួយវី

  4.   st0rmt4il dijo

    បានបន្ថែមទៅចំណូលចិត្ត!

    សូមអរគុណ!

  5.   ព្យុះទី ៣ dijo

    សូមក្រឡេកមើលវាប្រសិនបើអ្នកមានពាក្យបញ្ជា rpl បន្តិច

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

  6.   ឌូរ៉ាG dijo

    ក្នុងករណីដែលអ្នកណាម្នាក់ចាប់អារម្មណ៍គឺដូចគ្នានឹងពាក្យបញ្ជាលីនុចដែរ។ http://www.sysadmit.com/2015/07/linux-reemplazar-texto-en-archivos-con-sed.html

    1.    សង្ស័យ dijo

      ហើយតើមានអ្វីកើតឡើងប្រសិនបើនៅក្នុងឯកសារអ្វីដែលខ្ញុំចង់ជំនួសមានសម្រង់?
      ឧទាហរណ៍ជំនួសអ្វីដែលនិយាយថាអត្ថបទ៖ » ១″ ដោយអត្ថបទ៖ » ២″
      តើពាក្យបញ្ជានោះយ៉ាងម៉េច?

  7.   Percy salgado dijo

    ជំរាបសួរ

    ខ្ញុំចង់ជំនួសខ្សែអក្សរដែលមាន @ នៅកណ្តាលហើយបានប្តូរតែអក្សរទៅអក្សរមុនសញ្ញា។

    អត្ថបទដែលត្រូវផ្លាស់ប្តូរៈប្រទេសប៉េរូរស់នៅបានយូរ
    អត្ថបទថ្មីៈវីវ៉ាអ៉ីមេន @percysalgado
    បង្ហាញ: រស់នៅស្រុកកំណើតរបស់ខ្ញុំយូរ

    សូមអរគុណសម្រាប់ជំនួយរបស់អ្នក

  8.   អនាមិក dijo

    "\" អ្នកត្រូវតែប្រើសញ្ញា (-) នៅចំពោះមុខតួអក្សរដោយប្រើទ្វេដង @, ដូច្នេះពួកគេត្រូវបានបកប្រែជាអត្ថបទ។

  9.   Gaba dijo

    ហើយតើខ្ញុំត្រូវធ្វើយ៉ាងម៉េចនៅក្នុងបង្អួច ????