ក្នុងករណីខ្លះយើងចង់ជំនួសអត្ថបទនៅក្នុងឯកសារឧទាហរណ៍ផ្លាស់ប្តូរ ឯកសារ.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
បញ្ហាជាមួយវ៉ារ្យ៉ង់ទីពីរនេះគឺថាវានឹងមិនជំនួសនៅក្នុងឯកសារដែលមាននៅក្នុងថតរង🙂ទេ
ទោះយ៉ាងណាខ្ញុំសង្ឃឹមថាអ្នកបានរកឃើញថាវាគួរឱ្យចាប់អារម្មណ៍។ សម្រាប់ខ្ញុំវាពិតជាមានប្រយោជន៍ខ្ញុំអាចជំនួសអត្ថបទដោយផ្ទាល់ពីស្ថានីយរួចហើយ ... អស្ចារ្យ! 😀
៥៧ យោបល់ទុកអ្នក
អញ្ចឹងខ្ញុំគិតថាពួកយើងជាច្រើននៅទីនេះដឹងពីពាក្យបញ្ជា sed ដែលបម្រើគោលបំណងដូចគ្នាធ្វើអោយវាកាន់តែប្រសើរនិងងាយស្រួលប្រើ ...
សូមអរគុណសម្រាប់ការអត្ថាធិប្បាយរបស់អ្នក,
គ្រាន់តែព័ត៌មានលម្អិតពីរហេតុអ្វីអ្នកនិយាយថា sed ធ្វើឱ្យវាប្រសើរជាងមុន? តើវាពិតជាងាយស្រួលប្រើជាមួយតួអក្សរចំលែកច្រើនទេ?
ជូនពរដល់អ្នកទាំងអស់គ្នា !!! ។ ខ្ញុំបានប្រើពាក្យបញ្ជា sedនិងវិធីសាស្រ្តដែលបានពិពណ៌នានៅទីនេះជាមួយ perl គឺសាមញ្ញជាង។ សូមអរគុណ KZKG ^ ហ្គារ៉ា !!! ។
សូមអរគុណសម្រាប់មតិយោបល់🙂
ជាការប្រសើរណាស់យ៉ាងហោចណាស់វាហាក់ដូចជាខ្ញុំនេះគឺជារឿងសាមញ្ញជាងការបង្ហាញធម្មតា ... ថាជាមួយនឹងតួអក្សរចំលែក ៗ ជាច្រើនអ្វីដែលពិតជាស្មុគស្មាញក្នុងការយល់និងរៀនអាចត្រូវបានធ្វើចំពោះអ្នកដែលមិនចេះស្ទាត់។
មាន adage «ចាស់»នៅទីនោះ៖ «ខ្ញុំមានបញ្ហាខ្ញុំសំរេចចិត្តប្រើកន្សោមធម្មតា ... ឥឡូវខ្ញុំមានបញ្ហាពីរ»😉
ហាហាហាហាហាហា !!!
ការបញ្ចេញមតិទៀងទាត់អាចជួយសង្គ្រោះជីវិតយើងនៅចំណុចជាក់លាក់មួយ ... មែនហើយវាត្រូវចំណាយពេលយូរដើម្បីរៀនពីរបៀបប្រើវាហើយមិនស្លាប់ដោយព្យាយាម។
ប្រសិនបើខ្ញុំបានស្គាល់បទបញ្ជានេះច្រើនឆ្នាំកន្លងមកហើយនោះព្រះ !! តើជីវិតខ្ញុំសាមញ្ញប៉ុណ្ណា?
ច្បាស់ហើយ! ដោះស្រាយបានល្អពួកគេមានអានុភាពខ្លាំងណាស់🙂គ្មានអ្វីប្រសើរជាងក្នុងការរៀបចំអត្ថបទ។ ប៉ុន្តែពេលខ្លះដូចដែលអ្នកនិយាយក្នុងករណីនេះជាមួយភែលអ្នកមិនចាំបាច់ទៅឆ្ងាយទេប្រសិនបើអ្នកជំនួសបានគ្រប់គ្រាន់។
ទោះយ៉ាងណាខ្ញុំនឹងបានប្រើ Python :)
ប៉ុន្តែនៅក្នុងការស្រេកឃ្លានខ្ញុំឃើញវាកាន់តែសាមញ្ញ ... តើខ្ញុំកំពុងធ្វើអ្វីខុសទេ?
sed -i "ប្រសិនបើ / អ្វីដែលខ្ញុំចង់ផ្លាស់ប្តូរ / ឯកសារថ្មីទៅដាក់ /" ដែលត្រូវជំនួស
ហេហេ ... ហើយបើខ្ញុំចង់ជំនួស "http://my.blog.com/content/" ដោយ "http://my.blog.com/uploads/files/" 😀 ... អ្នកមានហើយ ដាក់ \ ដកឃ្លានិងកន្លែងផ្សេងទៀតហើយវាស្មុគស្មាញរឺអត់?
វាមិនចាំបាច់ប្រើ / ជាអ្នកបំបែកទេ។ រកមើលជាមួយ +
sed -i « s + http: //my.blog.com/content/+http: //my.blog.com/uploads/files/+ »ឯកសារ
O_O… WTF!
អ្នកបានបើកសកលលោកទាំងមូលនៃជម្រើសសម្រាប់ខ្ញុំឥឡូវនេះ .. អូ
ខ្ញុំចូលចិត្តប្រកាសទាំងនេះដែលយើងទាំងអស់គ្នារៀនអ្វីមួយ🙂
ខ្ញុំក៏មិនដឹងដែរ។
ខ្ញុំចូលចិត្តប្រើវី។
សាមញ្ញដូចជាៈ
:% s / ពួកយើង / គ្រួសារខ្ញុំ / ក្រាម
% -> ឯកសារទាំងមូល
s -> ស្វែងរក
g -> ការកើតឡើងទាំងអស់
ស្វាគមន៍ ..
សូមអរគុណ!
ខ្ញុំមិនដឹងពីរបៀបធ្វើវាជាមួយវី
បានបន្ថែមទៅចំណូលចិត្ត!
សូមអរគុណ!
សូមក្រឡេកមើលវាប្រសិនបើអ្នកមានពាក្យបញ្ជា rpl បន្តិច
http://microbuffer.wordpress.com/2011/02/28/rpl-buscar-y-reemplazar-strings-en-linux-unix/
ក្នុងករណីដែលអ្នកណាម្នាក់ចាប់អារម្មណ៍គឺដូចគ្នានឹងពាក្យបញ្ជាលីនុចដែរ។ http://www.sysadmit.com/2015/07/linux-reemplazar-texto-en-archivos-con-sed.html
ហើយតើមានអ្វីកើតឡើងប្រសិនបើនៅក្នុងឯកសារអ្វីដែលខ្ញុំចង់ជំនួសមានសម្រង់?
ឧទាហរណ៍ជំនួសអ្វីដែលនិយាយថាអត្ថបទ៖ » ១″ ដោយអត្ថបទ៖ » ២″
តើពាក្យបញ្ជានោះយ៉ាងម៉េច?
ជំរាបសួរ
ខ្ញុំចង់ជំនួសខ្សែអក្សរដែលមាន @ នៅកណ្តាលហើយបានប្តូរតែអក្សរទៅអក្សរមុនសញ្ញា។
អត្ថបទដែលត្រូវផ្លាស់ប្តូរៈប្រទេសប៉េរូរស់នៅបានយូរ
អត្ថបទថ្មីៈវីវ៉ាអ៉ីមេន @percysalgado
បង្ហាញ: រស់នៅស្រុកកំណើតរបស់ខ្ញុំយូរ
សូមអរគុណសម្រាប់ជំនួយរបស់អ្នក
"\" អ្នកត្រូវតែប្រើសញ្ញា (-) នៅចំពោះមុខតួអក្សរដោយប្រើទ្វេដង @, ដូច្នេះពួកគេត្រូវបានបកប្រែជាអត្ថបទ។
ហើយតើខ្ញុំត្រូវធ្វើយ៉ាងម៉េចនៅក្នុងបង្អួច ????