រឿងមួយដែលខ្ញុំតែងតែចូលចិត្តអំពីស្ថានីយលីនុចគឺជាអ្វីដែលអ្នកអាចសម្រេចបានដោយប្រើកន្សោមធម្មតា។ មិនថាយើងត្រូវការរកអត្ថបទស្មុគស្មាញឬជំនួសវាជាមួយអ្វីផ្សេងទៀតក៏ដោយការប្រើកន្សោមធម្មតាអាចជួយសម្រួលការងារបានយ៉ាងងាយ។ អនុញ្ញាតឱ្យចាប់ផ្តើមនៅដើម:
លិបិក្រម
តើកន្សោមធម្មតាគឺជាអ្វី?
កន្សោមធម្មតាគឺជាស៊េរីនៃតួអក្សរពិសេសដែលអនុញ្ញាតឱ្យយើងពិពណ៌នាអត្ថបទដែលយើងចង់រក។ ឧទាហរណ៍ប្រសិនបើយើងចង់ស្វែងរកពាក្យ "លីនុច" វាគ្រប់គ្រាន់ហើយក្នុងការដាក់ពាក្យនោះនៅក្នុងកម្មវិធីដែលយើងកំពុងប្រើ។ ពាក្យខ្លួនវាគឺជាកន្សោមធម្មតា។ រហូតមកដល់ពេលនេះវាហាក់ដូចជាសាមញ្ញណាស់ប៉ុន្តែតើមានអ្វីប្រសិនបើយើងចង់រកលេខទាំងអស់នៅក្នុងឯកសារជាក់លាក់មួយ? ឬខ្សែទាំងអស់ដែលចាប់ផ្តើមដោយអក្សរធំ? ក្នុងករណីទាំងនោះអ្នកមិនអាចដាក់ពាក្យសាមញ្ញបានទៀតទេ។ ដំណោះស្រាយគឺត្រូវប្រើកន្សោមធម្មតា។
កន្សោមធម្មតាទល់នឹងលំនាំឯកសារ។
មុនពេលយើងចូលទៅក្នុងប្រធានបទនៃការបញ្ចេញមតិជាទៀងទាត់ខ្ញុំចង់លុបបំបាត់ការយល់ច្រឡំជាទូទៅអំពីកន្សោមធម្មតា។ កន្សោមធម្មតាមិនមែនជាអ្វីដែលយើងដាក់ជាប៉ារ៉ាម៉ែត្រនៅក្នុងពាក្យបញ្ជាដូចជា rm, cp ជាដើមដើម្បីយោងទៅឯកសារផ្សេងៗនៅលើថាសរឹង។ នោះនឹងជាគំរូឯកសារ។ កន្សោមធម្មតាទោះបីស្រដៀងគ្នានៅក្នុងនោះពួកគេប្រើតួអក្សរធម្មតាខ្លះក៏ខុសគ្នាដែរ។ លំនាំឯកសារត្រូវបានបញ្ចោញប្រឆាំងនឹងឯកសារនៅលើថាសរឹងហើយត្រឡប់ឯកសារដែលត្រូវគ្នានឹងលំនាំទាំងស្រុងខណៈពេលដែលកន្សោមធម្មតាត្រូវបានបាញ់ប្រឆាំងនឹងអត្ថបទហើយត្រឡប់បន្ទាត់ដែលមានអត្ថបទដែលបានស្វែងរក។ ឧទាហរណ៍កន្សោមធម្មតាត្រូវនឹងលំនាំ *.*
វានឹងជាអ្វីដែលដូច ^.*\..*$
ប្រភេទនៃកន្សោមធម្មតា។
មិនមែនគ្រប់កម្មវិធីទាំងអស់ប្រើកន្សោមធម្មតាដូចគ្នាទេ។ មិនតិចទេ។ មានប្រភេទកន្សោមធម្មតាច្រើនឬតិចជាងច្រើនប៉ុន្តែមានកម្មវិធីផ្លាស់ប្តូរវាក្យសម្ព័ន្ធបន្តិចបន្តួចរួមទាំងផ្នែកបន្ថែមផ្ទាល់ខ្លួនឬប្រើតួអក្សរខុសគ្នាទាំងស្រុង។ ដូច្នេះនៅពេលអ្នកចង់ប្រើកន្សោមធម្មតាជាមួយកម្មវិធីដែលអ្នកមិនសូវស្គាល់អ្វីដែលត្រូវធ្វើដំបូងគឺមើលសៀវភៅដៃឬឯកសាររបស់កម្មវិធីដើម្បីដឹងថាតើកន្សោមធម្មតាដែលវាទទួលស្គាល់ជាអ្វី។
ដំបូងមានកន្សោមធម្មតាពីរប្រភេទដែលត្រូវបានគ្របដណ្តប់ដោយស្តង់ដារ POSIX ដែលជាអ្វីដែលឧបករណ៍លីនុចប្រើ។ នេះគឺជាកន្សោមធម្មតាមូលដ្ឋាននិងពង្រីក។ ពាក្យបញ្ជាជាច្រើនដែលធ្វើការជាមួយកន្សោមធម្មតាដូចជា grep ឬ sed អនុញ្ញាតឱ្យអ្នកប្រើទាំងពីរប្រភេទ។ ខ្ញុំនឹងនិយាយអំពីពួកគេនៅខាងក្រោម។ វាក៏មានកន្សោមធម្មតាតាមបែប PERL ផងដែរហើយបន្ទាប់មកមានកម្មវិធីដូចជា vim ឬ emacs ដែលប្រើវ៉ារ្យ៉ង់ទាំងនេះ។ ដោយអាស្រ័យលើអ្វីដែលយើងចង់ធ្វើវាប្រហែលជាសមស្របជាងក្នុងការប្រើមួយរឺផ្សេងទៀត។
ការសាកល្បងកន្សោមធម្មតា។
វាក្យសម្ព័ន្ធនៃកន្សោមធម្មតាគឺមិនមានអ្វីប្លែកទេ។ នៅពេលដែលយើងត្រូវសរសេរកន្សោមធម្មតាដែលស្មុគស្មាញយើងនឹងនៅពីមុខខ្សែអក្សរពិសេសដែលមិនអាចយល់បាននៅពេលក្រឡេកមើលជាមុនដូច្នេះដើម្បីរៀនពីរបៀបប្រើវាវាចាំបាច់ណាស់ដែលមានវិធីដើម្បីធ្វើតេស្តទាំងអស់ដែលយើងចង់បាននិងឃើញលទ្ធផលយ៉ាងងាយស្រួល។ នោះហើយជាមូលហេតុដែលឥឡូវនេះខ្ញុំនឹងដាក់បញ្ជាជាច្រើនដែលយើងអាចធ្វើតេស្តនិងពិសោធនូវអ្វីគ្រប់យ៉ាងដែលយើងត្រូវការរហូតដល់យើងមានកន្សោមធម្មតា។
ទីមួយគឺពាក្យបញ្ជា grep ។ នេះគឺជាពាក្យបញ្ជាដែលយើងនឹងប្រើញឹកញាប់បំផុតដើម្បីធ្វើការស្រាវជ្រាវ។ វាក្យសម្ព័ន្ធមានដូចខាងក្រោមៈ
grep [-E] 'REGEX' FICHERO
COMANDO | grep [-E] 'REGEX'
ខ្ញុំសូមផ្តល់អនុសាសន៍ឱ្យដាក់កន្សោមធម្មតានៅក្នុងសញ្ញាសម្រង់តែមួយដើម្បីកុំឱ្យសែលឡើង។ វិធីដំបូងគឺត្រូវរកកន្សោមធម្មតានៅក្នុងឯកសារ។ ទីពីរអនុញ្ញាតឱ្យច្រោះលទ្ធផលនៃពាក្យបញ្ជាតាមរយៈកន្សោមធម្មតា។ តាមលំនាំដើម grep ប្រើកន្សោមធម្មតាមូលដ្ឋាន។ ជម្រើស -E គឺសម្រាប់ប្រើកន្សោមធម្មតាដែលបានពង្រីក។
ល្បិចមួយដែលអាចជួយឱ្យយើងមើលថាតើការបញ្ចេញមតិទៀងទាត់មានប្រសិទ្ធភាពយ៉ាងដូចម្តេចដើម្បីឱ្យការប្រើប្រាស់ពណ៌នៅក្នុងពាក្យបញ្ជា grep ។ វិធីនោះផ្នែកនៃអត្ថបទដែលត្រូវនឹងឃ្លាធម្មតាដែលយើងកំពុងប្រើនឹងត្រូវបានបន្លិច។ ដើម្បីធ្វើឱ្យពណ៌សកម្មនៅក្នុងពាក្យបញ្ជា grep គ្រាន់តែធ្វើឱ្យប្រាកដថាអថេរបរិស្ថាន GREP_OPTIONS
មាននៅក្នុងតម្លៃ --color
ដែលអាចធ្វើបានជាមួយពាក្យបញ្ជានេះ៖
GREP_OPTIONS=--color
យើងអាចដាក់វានៅក្នុង .bashrc ដើម្បីឱ្យវាដំណើរការបានជានិច្ច។
វិធីមួយទៀតដើម្បីប្រើកន្សោមធម្មតាគឺដោយប្រើពាក្យបញ្ជា sed ។ នេះសមស្របជាងសម្រាប់ការជំនួសអត្ថបទប៉ុន្តែក៏អាចត្រូវបានប្រើសម្រាប់ស្វែងរកផងដែរ។ វាក្យសម្ព័ន្ធសម្រាប់វានឹងមានដូចនេះ៖
sed -n[r] '/REGEX/p' FICHERO
COMANDO | sed -n[r] '/REGEX/p'
ពាក្យបញ្ជា sed ក៏ប្រើកន្សោមធម្មតាជាមូលដ្ឋានតាមលំនាំដើមអ្នកអាចប្រើកន្សោមធម្មតាដែលបានពង្រីកជាមួយជម្រើស -r ។
បទបញ្ជាមួយទៀតដែលខ្ញុំក៏ចង់ដាក់ឈ្មោះគឺ awk ។ ពាក្យបញ្ជានេះអាចត្រូវបានប្រើសម្រាប់រឿងជាច្រើនព្រោះវាអនុញ្ញាតឱ្យអ្នកសរសេរស្គ្រីបជាភាសាសរសេរកម្មវិធីផ្ទាល់ខ្លួនរបស់អ្នក។ ប្រសិនបើអ្វីដែលយើងចង់បានគឺស្វែងរកកន្សោមធម្មតានៅក្នុងឯកសារឬលទ្ធផលនៃពាក្យបញ្ជាវិធីដើម្បីប្រើវានឹងមានដូចខាងក្រោម៖
awk '/REGEX/' FICHERO
COMANDO | awk '/REGEX/'
ពាក្យបញ្ជានេះតែងតែប្រើកន្សោមធម្មតាដែលបានពង្រីក។
ដើម្បីធ្វើតេស្តរបស់យើងយើងក៏ត្រូវការអត្ថបទដែលនឹងធ្វើជាឧទាហរណ៍ដើម្បីស្រាវជ្រាវវា។ យើងអាចប្រើអត្ថបទដូចខាងក្រោមៈ
- Lista de páginas wiki: ArchLinux: https://wiki.archlinux.org/ Gentoo: https://wiki.gentoo.org/wiki/Main_Page CentOS: http://wiki.centos.org/ Debian: https://wiki.debian.org/ Ubuntu: https://wiki.ubuntu.com/ - Fechas de lanzamiento: Arch Linux: 11-03-2002 Gentoo: 31/03/2002 CentOs: 14-05-2004 03:32:38 Debian: 16/08/1993 Ubuntu: 20/10/2004 Desde Linux Rulez.
នេះគឺជាអត្ថបទដែលខ្ញុំនឹងប្រើសម្រាប់ឧទាហរណ៍នៅផ្នែកផ្សេងទៀតនៃការប្រកាសដូច្នេះខ្ញុំសូមណែនាំឱ្យអ្នកចម្លងវាចូលទៅក្នុងឯកសារដើម្បីឱ្យវាងាយស្រួលពីស្ថានីយ។ អ្នកអាចដាក់ឈ្មោះដែលអ្នកចង់បាន។ ខ្ញុំបានហៅវាថា regex ។
ចាប់ផ្តើមមេរៀន។
ឥឡូវនេះយើងមានអ្វីគ្រប់យ៉ាងដែលយើងត្រូវការដើម្បីចាប់ផ្តើមសាកល្បងកន្សោមធម្មតា។ សូមបន្តបន្តិចម្តង ៗ ។ ខ្ញុំនឹងដាក់ឧទាហរណ៍ជាច្រើននៃការស្វែងរកជាមួយនឹងកន្សោមធម្មតាដែលខ្ញុំនឹងពន្យល់ពីចរិតនីមួយៗ។ ពួកគេមិនមែនជាគំរូល្អទេប៉ុន្តែដោយសារខ្ញុំនឹងមានការផ្សាយយូរខ្ញុំមិនចង់ធ្វើឱ្យស្មុគស្មាញដល់វាទៀតទេ។ ហើយខ្ញុំគ្រាន់តែនឹងកោសផ្ទៃនៃអ្វីដែលអាចធ្វើបានដោយការបញ្ចេញមតិទៀងទាត់។
អ្វីដែលសាមញ្ញបំផុតគឺត្រូវស្វែងរកពាក្យជាក់លាក់ឧទាហរណ៍យើងចង់រកបន្ទាត់ទាំងអស់ដែលមានពាក្យថាលីនុច។ នេះជាការងាយស្រួលបំផុតព្រោះយើងត្រូវសរសេរ៖
grep 'Linux' regex
ហើយយើងអាចឃើញលទ្ធផល៖
សំខាន់បំផុតលីនុច៖ https://wiki.archlinux.org/ Arch លីនុច: ១១-០៣-២០០២ ពី លីនុច រេស៊ីល។
ទាំងនេះគឺជាបន្ទាត់ទាំងបីដែលមានពាក្យ "លីនុច" ដែលប្រសិនបើយើងបានប្រើល្បិចពណ៌នឹងលេចឡើងដែលត្រូវបានបន្លិច។ ចំណាំថាវាស្គាល់ពាក្យដែលយើងកំពុងស្វែងរកទោះបីជាវាជាផ្នែកនៃពាក្យវែងជាងនៅក្នុង“ ArchLinux” ក៏ដោយ។ ទោះយ៉ាងណាក៏ដោយវាមិនបានគូសបញ្ជាក់ពីពាក្យ "លីនុច" ដែលមាននៅក្នុង URL "https://wiki.archlinux.org/" ទេ។ នោះគឺដោយសារតែនៅទីនោះវាលេចឡើងជាមួយអក្សរ "អិល" ហើយយើងបានស្វែងរកវាជាអក្សរធំ។ ពាក្យបញ្ជា grep មានជម្រើសសម្រាប់រឿងនេះប៉ុន្តែខ្ញុំនឹងមិននិយាយអំពីពួកគេនៅក្នុងអត្ថបទដែលទាក់ទងនឹងការបញ្ចេញមតិធម្មតាទេ។
ជាមួយនឹងការធ្វើតេស្តសាមញ្ញនេះយើងអាចទាញសេចក្តីសន្និដ្ឋានដំបូង៖
- តួអក្សរធម្មតាមួយដាក់ចូលទៅក្នុងកន្សោមធម្មតាត្រូវនឹងខ្លួនវា។
ដែលត្រូវនិយាយថាប្រសិនបើអ្នកដាក់អក្សរ "a" វានឹងស្វែងរកអក្សរ "a" ។ វាហាក់ដូចជាឡូជីខលមែនទេ? 🙂
ឥឡូវឧបមាថាយើងចង់ស្វែងរកពាក្យ“ សេអូ” ដែលបន្តដោយតួអក្សរណាមួយប៉ុន្តែមានតែតួអក្សរមួយទេ។ សម្រាប់នេះយើងអាចប្រើតួអក្សរ "។ " ដែលជាតួអក្សរជំនួសដែលត្រូវនឹងតួអក្សរណាមួយប៉ុន្តែមានតែមួយប៉ុណ្ណោះ៖
grep 'CentO.' regex
ហើយលទ្ធផលគឺ៖
CentOS៖ http://wiki.centos.org/ មជ្ឈមណ្ឌល: 14-05-2004 03:32:38
ដែលមានន័យថាវារួមបញ្ចូលទាំងអក្សរ "S" នៅក្នុង "CentOS" ទោះបីជាក្នុងករណីមួយវាជាអក្សរធំនិងនៅអក្សរតូចផ្សេងទៀតក៏ដោយ។ ប្រសិនបើមានតួអក្សរផ្សេងទៀតបានបង្ហាញខ្លួននៅកន្លែងនោះវាក៏នឹងបញ្ចូលវាផងដែរ។ យើងមានវិធានទី ២ រួចហើយ៖
- តួអក្សរ "។" ផ្គូផ្គងតួអក្សរណាមួយ។
វាលែងជារឿងតូចតាចដូចអ្វីដែលវាហាក់ដូចជាអញ្ចឹងប៉ុន្តែជាមួយនេះយើងមិនអាចធ្វើបានច្រើនទេ។ តោះទៅបន្តិចទៀត។ ឧបមាថាយើងចង់ស្វែងរកខ្សែដែលឆ្នាំ ២០០២ និង ២០០៤ លេចចេញ។ វាហាក់ដូចជាការស្វែងរកពីរប៉ុន្តែវាអាចត្រូវបានធ្វើក្នុងពេលតែមួយដូចនេះ៖
grep '200[24]' regex
ដែលមានន័យថាយើងចង់រកលេខ ២០០ ដែលតាមពីក្រោយដោយលេខ ២ ឬ ៤ ហើយលទ្ធផលគឺនេះ៖
Arch Linux៖ ១១-០៣-2002 Gentoo៖ ០៣/៣១ /2002 សេនសេនៈ ១៤-០៥-2004 03:32:38 Ubuntu: 20/10/2004
ដែលនាំយើងទៅកាន់វិធានទីបី៖
- តួអក្សរច្រើននៅក្នុងតង្កៀបផ្គូផ្គងនឹងតួអក្សរណាមួយក្នុងតង្កៀប។
ដង្កៀបផ្តល់នូវការលេងកាន់តែច្រើន។ ពួកគេក៏អាចត្រូវបានប្រើដើម្បីដកតួអក្សរផងដែរ។ ឧទាហរណ៍សន្មតថាយើងចង់ស្វែងរកគេហទំព័រដែលតួអក្សរ ":" លេចឡើងប៉ុន្តែមិនត្រូវបានតាមដានដោយ "/" ។ ពាក្យបញ្ជាគឺដូចនេះ៖
grep ':[^/]' regex
វាគ្រាន់តែជាបញ្ហានៃការដាក់ "^" ជាតួអក្សរដំបូងនៅខាងក្នុងដង្កៀប។ អ្នកអាចដាក់តួអក្សរទាំងអស់ដែលអ្នកចង់បាននៅខាងក្រោម។ លទ្ធផលនៃពាក្យបញ្ជាចុងក្រោយនេះគឺមានដូចខាងក្រោម៖
Archlinux: https://wiki.archlinux.org/ Gentoo: https://wiki.gentoo.org/wiki/Main_Page CentOS: http://wiki.centos.org/ Debian: https://wiki.debian.org/ Ubuntu: https://wiki.ubuntu.com/ Arch Linux: ០៣-១១-២០០២ ហ្គូលូ: ០៣/៣១/២០០២ មជ្ឈមណ្ឌល: 14-05-2004 03:32:3៨ ដេបៀន: ០៨/១៦/១៩៩៣ អ៊ូប៊ុនទូ: 20 / 10 / 2004
ឥឡូវនេះឈ្មោះ ":" នៅពីក្រោយឈ្មោះចែកចាយត្រូវបានបន្លិចប៉ុន្តែមិនមែនឈ្មោះនៅក្នុង URL ទេពីព្រោះ URL មាន "/" បន្ទាប់ពីពួកគេ។
- ការដាក់តួអក្សរ "^" នៅដើមតង្កៀបត្រូវនឹងតួអក្សរណាមួយលើកលែងតែតួអក្សរផ្សេងទៀតនៅក្នុងតង្កៀប។
រឿងមួយទៀតដែលយើងអាចធ្វើបានគឺបញ្ជាក់ជួរតួអក្សរ។ ឧទាហរណ៍ដើម្បីស្វែងរកលេខណាមួយដែលអមដោយ "-" វានឹងមើលទៅដូចនេះ:
grep '[0-9]-' regex
ជាមួយនេះយើងកំពុងបញ្ជាក់ពីតួអក្សរចន្លោះ ០ និង ៩ ហើយបន្ទាប់មកដកសញ្ញាដក។ តោះមើលលទ្ធផល៖
Arch Linux៖ ១1-03-មជ្ឈមណ្ឌលឆ្នាំ ២០០២៖ ១4-05-2004 03: 32: 38
អ្នកអាចបញ្ជាក់ជួរច្រើនក្នុងតង្កៀបសូម្បីតែលាយជួរជាមួយតួអក្សរតែមួយ។
- ការដាក់តួអក្សរពីរដែលបំបែកដោយ "-" ក្នុងតង្កៀបត្រូវនឹងតួអក្សរណាមួយនៅក្នុងជួរ។
តោះយើងមើលឥឡូវនេះប្រសិនបើយើងអាចជ្រើសរើសផ្នែកដំបូងនៃ URLs ។ មួយដែលនិយាយថា "http" ឬ "https" ។ ពួកវាខុសគ្នាតែនៅក្នុងអក្សរចុងក្រោយប៉ុណ្ណោះដូច្នេះសូមធ្វើវាដូចខាងក្រោម៖
grep -E 'https?' regex
សញ្ញាសួរត្រូវបានប្រើដើម្បីធ្វើឱ្យតួអក្សរនៅខាងឆ្វេងជាជំរើស។ ប៉ុន្តែឥឡូវនេះយើងបានបន្ថែមជម្រើស -E ទៅពាក្យបញ្ជា។ នេះដោយសារតែការសួរចម្លើយគឺជាលក្ខណៈពិសេសនៃកន្សោមធម្មតាដែលបានពង្រីក។ រហូតមកដល់ពេលនេះយើងកំពុងប្រើកន្សោមធម្មតាជាមូលដ្ឋានដូច្នេះមិនចាំបាច់ដាក់អ្វីទេ។ តោះមើលលទ្ធផល៖
ArchLinux៖ HTTPS៖ //wiki.archlinux.org/ Gentoo៖ HTTPS: //wiki.gentoo.org/wiki/Main_Page CentOS៖ http: //wiki.centos.org/ ដេបៀន៖ HTTPS៖ //wiki.debian.org/ អ៊ូប៊ុនទូ៖ HTTPS៖ //wiki.ubuntu.com/
ដូច្នេះយើងមានច្បាប់ថ្មីរួចហើយ៖
- តួអក្សរមួយដែលអមដោយ "?" ផ្គូផ្គងតួអក្សរនោះឬគ្មាន។ វាមានសុពលភាពសម្រាប់កន្សោមធម្មតាដែលបានពង្រីក។
ឥឡូវយើងនឹងរកពាក្យខុសគ្នាពីរ។ តោះមើលរបៀបរកបន្ទាត់ដែលមានទាំងពាក្យ "ដេបៀន" និង "អ៊ូប៊ុនទូ" ។
grep -E 'Debian|Ubuntu' regex
ជាមួយរបារបញ្ឈរយើងអាចញែកកន្សោមធម្មតាខុសគ្នាពីរឬច្រើនហើយស្វែងរកបន្ទាត់ដែលត្រូវនឹងវា៖
ដេបៀន៖ https://wiki.debian.org/ គូប៊ុនទូ៖ https://wiki.ubuntu.com/ ដេបៀន: 16 / 08 / 1993 គូប៊ុនទូ: 20 / 10 / 2004
- ចរិត« | » បម្រើដើម្បីបំបែកកន្សោមធម្មតានិងផ្គូផ្គងជាមួយពួកវាណាមួយ & regular; ។ វាក៏ជាក់លាក់ចំពោះការបង្ហាញកន្សោមទៀងទាត់។
តោះបន្ត។ ឥឡូវនេះយើងនឹងស្វែងរកពាក្យ "លីនុច" ប៉ុន្តែមានតែកន្លែងដែលវាមិនជាប់នឹងពាក្យផ្សេងទៀតនៅខាងឆ្វេងប៉ុណ្ណោះ។ យើងអាចធ្វើដូចនេះបាន៖
grep '\
តួអក្សរសំខាន់នៅទីនេះគឺ "<" ប៉ុន្តែវាចាំបាច់ត្រូវរត់គេចខ្លួនដោយដាក់ "\" នៅពីមុខវាដូច្នេះហ្គ្រេហ្គឺនឹងបកស្រាយវាថាជាតួអក្សរពិសេស។ លទ្ធផលមានដូចខាងក្រោមៈ
សំខាន់បំផុត លីនុច: ១១-០៣-២០០២ ពី លីនុច រេស៊ីល។
អ្នកក៏អាចប្រើ "\>" ដើម្បីស្វែងរកពាក្យដែលមិនត្រឹមត្រូវនៅក្បែរគ្នា។ តោះមើលឧទាហរណ៍មួយ។ តោះសាកល្បងពាក្យបញ្ជានេះ៖
grep 'http\>' regex
លទ្ធផលដែលវាបង្កើតគឺ៖
CentOS៖ http: //wiki.centos.org/
"Http" បានចេញមកប៉ុន្តែមិនមែន "https" ទេពីព្រោះនៅក្នុង "https" នៅតែមានតួអក្សរនៅខាងស្តាំនៃអក្សរ "p" ដែលអាចជាផ្នែកនៃពាក្យ។
- តួអក្សរ "<" និង ">" ត្រូវនឹងការចាប់ផ្តើមនិងចុងបញ្ចប់នៃពាក្យរៀងៗខ្លួន។ តួអង្គទាំងនេះត្រូវតែរត់គេចខ្លួនដើម្បីកុំអោយគេបកស្រាយថាជាតួអក្សរព្យញ្ជនៈ។
យើងទៅជាមួយអ្វីដែលស្មុគស្មាញបន្តិច។ តួអក្សរ "+" ត្រូវនឹងតួអក្សរនៅខាងឆ្វេងរបស់វាម្តងហើយម្តងទៀតយ៉ាងហោចណាស់ម្តង។ តួអក្សរនេះអាចប្រើបានតែជាមួយកន្សោមធម្មតាដែលបានពង្រីក។ ជាមួយវាយើងអាចស្វែងរកឧទាហរណ៍នៃលេខបន្តបន្ទាប់ជាច្រើនដែលចាប់ផ្តើមជាមួយ ":" ។
grep -E ':[0-9]+' regex
លទ្ធផល៖
សេនសេនៈ ០៥-១៤-២០០៤ ០៣: ២៥: ១
លេខ ៣៨ ក៏ត្រូវបានគូសបញ្ជាក់ផងដែរព្រោះវាក៏ចាប់ផ្តើមជាមួយ ":" ។
- តួអក្សរ "+" ត្រូវនឹងតួអក្សរនៅខាងឆ្វេងរបស់វាម្តងហើយម្តងទៀតយ៉ាងហោចណាស់។
អ្នកក៏អាចគ្រប់គ្រងចំនួនពាក្យដដែលៗដោយប្រើ "{" និង "}" ។ គំនិតនេះគឺដើម្បីបញ្ចូលលេខដែលបង្ហាញពីចំនួនពាក្យដដែលៗដែលយើងចង់បាន។ អ្នកក៏អាចដាក់ជួរបានដែរ។ តោះមើលឧទាហរណ៍នៃករណីទាំងពីរ។
ដំបូងយើងនឹងរកលំដាប់លេខបួនខ្ទង់ទាំងអស់ដែលមាន៖
grep '[0-9]\{4\}' regex
ចំណាំថាខ្សែដៃអង្កាញ់ ៗ ត្រូវតែរត់គេចប្រសិនបើយើងកំពុងប្រើកន្សោមធម្មតាជាមូលដ្ឋានប៉ុន្តែមិនមែនប្រសិនបើយើងប្រើសញ្ញាវែងទេ។ ជាមួយនឹងការពង្រីកវានឹងដូចនេះ:
grep -E '[0-9]{4}' regex
ហើយលទ្ធផលក្នុងករណីទាំងពីរអាចជារឿងនេះ៖
Arch Linux៖ ១១-០៣-2002 Gentoo៖ ០៣/៣១ /2002 សេនសេនៈ ១៤-០៥-2004 03:32:38 Debian: 16/08/1993 អ៊ូប៊ុនទូ៖ ១០/២០ /2004
- តួអក្សរ "{" និង "}" ដែលមានលេខនៅចន្លោះពួកវាត្រូវគ្នានឹងតួអក្សរមុនដែលធ្វើម្តងទៀតចំនួនដងដែលបានបញ្ជាក់។
ឥឡូវឧទាហរណ៍ផ្សេងទៀតជាមួយដង្កៀប។ ឧបមាថាយើងចង់រកពាក្យដែលមានអក្សរតូចចន្លោះពី ៣ ទៅ ៦ ។ យើងអាចធ្វើដូចខាងក្រោមៈ
grep '[a-z]\{3,6\}' regex
ហើយលទ្ធផលនឹងជានេះ៖
- អិលអ៊ី de ទំព័រs វិគី: ទៅrchLinux: HTTPS: //វិគី.archlinux.org/ Gចូល: HTTPS: //វិគី.ហ្គេនតូ.org/វិគី/MAin_Pអាយុ Centប្រព័ន្ធប្រតិបត្តិការ: http: //វិគី.សេន.org/ ឃអៀប៊ីន: HTTPS: //វិគី.debian.org/ ឬចុងបញ្ចប់បានស្លាប់: HTTPS: //វិគី.Ubuntu.com & ‧;/ - ចអ្នកនឹក de បើកដំណើរការ: ទៅrch Linux: ១១-០៣-២០០២ ជីចូល៖ ០៣/៣១/២០០២ គentOs: 14-05-2004 03:32:38 Dអៀប៊ីន៖ ០៨/១៦/១៩៩៣ យូចុងបញ្ចប់បានស្លាប់: ១០/២០/២០០៤ ឃវាគឺជាការ Linux Rulez.
ដែលដូចដែលអ្នកបានឃើញហើយមើលទៅមិនដូចអ្វីដែលយើងចង់បានទេ។ នោះដោយសារតែកន្សោមធម្មតារកឃើញអក្សរនៅក្នុងពាក្យផ្សេងទៀតដែលវែងជាងនេះ។ តោះសាកល្បងកំណែផ្សេងទៀត៖
grep '\<[a-z]\{3,6\}\>' regex
លទ្ធផល៖
- បញ្ជីទំព័រ វិគី៖ ArchLinux៖ HTTPS: //វិគី.archlinux ។org/ Gentoo: HTTPS: //វិគី.ហ្គេនតូ.org/វិគី/ Main_Page CentOS៖ http: //វិគី.សេន.org/ ដេបៀន៖ HTTPS: //វិគី.debian.org/ អ៊ូប៊ុនទូ៖ HTTPS: //វិគី.Ubuntu.com & ‧;/
នេះមើលទៅដូចអ្វីដែលយើងចង់បានរួចហើយ។ អ្វីដែលយើងបានធ្វើគឺតំរូវអោយពាក្យនោះចាប់ផ្តើមមុនអក្សរទីមួយនិងបញ្ចប់បន្ទាប់ពីអក្សរចុងក្រោយ។
- តួអក្សរ "{" និង "}" ដែលមានពីរលេខរវាងពួកវាបំបែកដោយសញ្ញាក្បៀសផ្គូផ្គងនឹងតួអក្សរមុនធ្វើម្តងទៀតចំនួនដងដែលបង្ហាញដោយលេខទាំងពីរ។
ឥឡូវយើងក្រឡេកមើលតួអក្សរដែលសំខាន់បំផុតនៃ "+" ។ វាគឺ "*" ហើយប្រតិបត្តិការរបស់វាគឺស្រដៀងគ្នាខ្លាំងណាស់ដែលវាត្រូវនឹងចំនួនតួអក្សរណាមួយរួមទាំងសូន្យ។ នោះគឺវាធ្វើដូចគ្នានឹងអក្សរ "+" ប៉ុន្តែមិនតម្រូវឱ្យមានតួអក្សរនៅខាងឆ្វេងរបស់វាបង្ហាញនៅក្នុងអត្ថបទទេ។ ឧទាហរណ៍តោះព្យាយាមស្វែងរកអាស័យដ្ឋានទាំងនោះដែលចាប់ផ្តើមលើវិគីនិងបញ្ចប់នៅលើចំនុចកំពូល៖
grep 'wiki.*org' regex
តោះមើលលទ្ធផល៖
ArchLinux៖ https: //wiki.archlinux.org/ Gentoo៖ https: //wiki.gentoo.org/ វិគី / Main_Page CentOS៖ http: //wiki.centos.org/ ដេបៀន៖ https: //wiki.debian.org/
Perfecto ។
ឥឡូវតួអក្សរចុងក្រោយដែលយើងនឹងមើល។ តួអក្សរ \ "ត្រូវបានប្រើដើម្បីគេចពីតួអក្សរទៅខាងស្តាំរបស់វាដូច្នេះវាបាត់បង់អត្ថន័យពិសេសរបស់វា។ ឧទាហរណ៍ៈឧបមាថាយើងចង់រកទីតាំងដែលបញ្ចប់ដោយចំណុច។ រឿងដំបូងដែលអាចកើតឡើងចំពោះយើងអាចជានេះ៖
grep '.$' regex
លទ្ធផលមិនមែនជាអ្វីដែលយើងកំពុងស្វែងរកទេ៖
- បញ្ជីទំព័រវីគី: ArchLinux៖ https://wiki.archlinux.org/ Gentoo៖ https://wiki.gentoo.org/wiki/Main_Page CentOS៖ http://wiki.centos.org/ ដេបៀន៖ https://wiki.debian.org/ អ៊ូប៊ុនទូ៖ https://wiki.ubuntu.com/ - កាលបរិច្ឆេទចេញផ្សាយ៖ Arch Linux៖ ០៣-១១-២០០២2 Gentoo: ០៣/៣១/២០០2 CentOs: 14-05-2004 03:32:38 ដេបៀនៈ ០៨/១៦/១៩៩3 អ៊ូប៊ុនទូ៖ ១០/២០/២០០4 ពីលីនុច Rulez.
នេះគឺដោយសារតែ "។ " ផ្គូផ្គងអ្វីទាំងអស់ដូច្នេះកន្សោមធម្មតាផ្គូផ្គងតួអក្សរចុងក្រោយនៃបន្ទាត់នីមួយៗទោះបីជាវាយ៉ាងណា & # XNUMX; ។ ដំណោះស្រាយគឺនេះ៖
grep '\.$' regex
ឥឡូវនេះលទ្ធផលគឺជាអ្វីដែលយើងចង់បាន៖
ពីលីនុច Rulez.
ល្បែងចប់ហើយ
ទោះបីជាប្រធានបទនៃការបង្ហាញធម្មតាមានភាពស្មុគស្មាញដូច្នេះខ្ញុំនឹងផ្តល់ឱ្យអត្ថបទជាបន្តបន្ទាប់ខ្ញុំគិតថាខ្ញុំបានផ្តល់ឱ្យអ្នកនូវការឈឺចាប់គ្រប់គ្រាន់ហើយ។ ប្រសិនបើអ្នកបានគ្រប់គ្រងដើម្បីមកដល់សូមអបអរសាទរ។ ហើយប្រសិនបើអ្នកបានអានរឿងទាំងអស់នេះក្នុងពេលអង្គុយចូរលេបថ្នាំអាស្ពីរីនឬអ្វីមួយពីព្រោះវាមិនល្អទេ។
សំរាប់ពេលនេះគឺទាំងអស់។ ប្រសិនបើអ្នកចូលចិត្តអត្ថបទនេះប្រហែលជាអ្នកអាចសរសេរអត្ថបទមួយទៀត។ ក្នុងពេលនេះខ្ញុំសូមណែនាំអ្នកឱ្យសាកល្បងកន្សោមធម្មតាទាំងអស់នៅក្នុងស្ថានីយដើម្បីដឹងច្បាស់ពីរបៀបដែលវាដំណើរការ។ ហើយចាំថា: មានតែលោក Chuck Norris ប៉ុណ្ណោះដែលអាចញែក HTML ដោយប្រើកន្សោមធម្មតា។
៥៧ យោបល់ទុកអ្នក
តើជីវិតយើងនឹងទៅជាយ៉ាងម៉េចបើគ្មាន regex?
អត្ថបទមានប្រយោជន៍ណាស់ប៉ុន្តែខ្ញុំនឹងអានបន្តិចម្តង ៗ ។ សូមអរគុណច្រើន។
សូមអរគុណចំពោះការអត្ថាធិប្បាយ។ ខ្ញុំនៅតែមិនជឿថាអត្ថបទរបស់ខ្ញុំចេញមកហើយ។ has វាចេញមកមានកំហុសខ្លះប៉ុន្តែខ្ញុំសង្ឃឹមថាវាមានប្រយោជន៍។ 🙂
សូមអរគុណ!
មានពេលខ្លះខ្ញុំត្រូវសិក្សាបន្តិចបន្តួចអំពីកន្សោមធម្មតា .. ខ្ញុំសូមអរគុណអ្នកដែលបានបង្រៀនហើយការណែនាំជាជំហាន ៗ ដើម្បីរៀនពួកគេម្នាក់ៗ ។.
ល្អណាស់! .. ខ្ញុំនឹងទទួលបានថ្នាំអាស្ពីរីននោះ
កុំគួរសមអី។ ភាពក្លាហាននិងការបង្ហាញធម្មតាមិនអាចនៅជាមួយអ្នកបានទេ។ 🙂
ប្រកាសដ៏អស្ចារ្យ! ធ្វើបានល្អ។ ខ្ញុំឆ្ងល់ថាតើវាបានចំណាយពេលប៉ុន្មានម៉ោងអ្នក
សើចឮខ្លាំង!! សំណួរគឺៈតើខ្ញុំត្រូវចំណាយពេលប៉ុន្មានម៉ោងប្រសិនបើខ្ញុំនិយាយអ្វីគ្រប់យ៉ាងដែលខ្ញុំចង់និយាយ? គ្មានកំណត់ទេ !! 🙂
រឿងមួយដែលខ្ញុំមិនបានដឹង, អត្ថបទល្អ!
សូមអរគុណ។ ខ្ញុំមានសេចក្តីរីករាយក្នុងការចែករំលែកវាជាមួយអ្នក។
ការពន្យល់ដ៏អស្ចារ្យ។ សូមអបអរសាទរ! មានប្រយោជន៍ណាស់!
ខ្ញុំរីករាយដែលអ្នកយល់ថាវាមានប្រយោជន៍។ ដូច្នេះវាជាការរីករាយក្នុងការសរសេរ។
នេះគួរតែទៅកន្លែងណាដែលពិសេស។ ដូចជាលក្ខណៈពិសេសប៉ុន្តែមានអត្ថប្រយោជន៍ជាក់លាក់ណាស់។ មានប្រយោជន៍ណាស់ទោះបីខ្ញុំចង់ឃើញវាត្រូវបានអនុវត្តចំពោះវីម។
នោះគឺជាសំណួរនៃការសួរខ្លួនឯង។ ខ្ញុំមានអត្ថបទពីរបីបន្ថែមទៀតលើការបង្ហាញទៀងទាត់នៅក្នុងចិត្ត។ ហើយខ្ញុំអាចនិយាយពីមូលហេតុនៅក្នុងពួកគេ។ វាមានភាពខុសគ្នាខ្លះពីអ្វីដែលខ្ញុំបានពន្យល់នៅក្នុងអត្ថបទនេះ។ វាជាបញ្ហានៃការទទួលបាននៅលើវា។ 🙂
ល្អ!
អត្ថបទរបស់អ្នកល្អណាស់វាជាការចង់ដឹងចង់, ថ្មីៗនេះ (ឥឡូវនេះ) ខ្ញុំបានចុះផ្សាយនៅលើគេហទំព័ររបស់ខ្ញុំនូវធាតុមួយដែលខ្ញុំបានរៀបចំសំរាប់ពីរបីថ្ងៃដែលខ្ញុំបានប្រមូលបញ្ជីអ្នកទាក់ទងសម្រាប់ការបង្ហាញទៀងទាត់និងឧទាហរណ៍មួយចំនួន។ ហើយវាត្រឹមត្រូវណាស់ក្នុងការចូល DesdeLinux និងឃើញធាតុមួយនៅក្នុងប្រធានបទតែមួយ!
ប្រសិនបើវាជាការលួងលោមណាមួយអណ្តូងរ៉ែគឺមានច្រើនទៀត US
ពិតណាស់ regex គឺជារបស់មួយដែលមានប្រយោជន៍បំផុតជាធម្មតាខ្ញុំប្រើវាដើម្បីកាត់លទ្ធផលនៃពាក្យបញ្ជាហើយរក្សាទុកផ្នែកដែលខ្ញុំចាប់អារម្មណ៍ហើយបន្ទាប់មកធ្វើអន្តរកម្មជាមួយវានៅក្នុងស្គ្រីបប៊ីប។ ខ្ញុំក៏ធ្លាប់ប្រើវាច្រើនដែរនៅក្នុងសាកលវិទ្យាល័យហើយពួកគេមានសារៈសំខាន់យ៉ាងខ្លាំងក្នុងការស្ថាបនាអ្នកចងក្រង (ក្នុងនិយមន័យសូរស័ព្ទនិងសេក) ។ សរុបសេចក្ដីមកពិភពលោកទាំងមូល។
ស្វាគមន៍និងការងារល្អណាស់។
សូមអរគុណខ្លាំងណាស់។
ខ្ញុំក៏ចូលចិត្តអត្ថបទរបស់អ្នកដែរ។ វាច្បាស់ជាងខ្ញុំ។ វាអាចដើរតួជាឯកសារយោងរហ័ស។ វាជារឿងចៃដន្យដែលយើងបានសរសេរវាក្នុងពេលតែមួយ។ អ្នកអាចឃើញថាមនុស្សចាប់អារម្មណ៍នឹងប្រធានបទ។ 🙂
កន្សោមធម្មតាសម្រាប់នំប៉ាវ =) ឥឡូវនេះវាកាន់តែច្បាស់សម្រាប់ខ្ញុំដោយវិធីមួយដើម្បីទទួលបានលទ្ធផលជាមួយពណ៌សម្រាប់ហ្គ្រេហ្គគឺដោយបង្កើតឈ្មោះហៅក្រៅនៅក្នុង .bashrc ឈ្មោះហៅក្រៅ grep = 'grep –color = ជានិច្ច' ក្នុងករណី វាធ្វើការសម្រាប់នរណាម្នាក់។
ទាក់ទង
ពិត។ នោះគឺជាវិធីមួយទៀតដើម្បីធ្វើវា។ សូមអរគុណសម្រាប់ការបញ្ចូល។ 🙂
O_O …ចំណែកនៃការបរិច្ចាគ !!! អូ ...
អរគុណខ្លាំងណាស់សម្រាប់ការបង្ហោះខ្ញុំបានរង់ចាំអ្វីដែលដូចនោះអស់មួយរយៈខ្ញុំទុកវាឱ្យបើកដើម្បីអានវាយ៉ាងស្ងប់ស្ងាត់នៅផ្ទះដោយគ្មានការរំខានក្នុងការផ្តោតអារម្មណ៍ lol ។
អរគុណសម្រាប់អត្ថបទខ្ញុំពិតជាធ្វើ😀
ខ្ញុំដឹងថាអ្នកចង់។ សើចឮខ្លាំង!! ការពិតគឺថាមានរឿងជាច្រើនកំពុងបាត់ប៉ុន្តែខ្ញុំមានផ្នែកទីពីរនៅក្នុងចិត្តរួចហើយ។ 🙂
អត្ថបទល្អណាស់ប្រសិនបើមានតែខ្ញុំបានអានវាកាលពីម្សិលមិញថ្នាក់ដែលខ្ញុំបានផ្តល់ថ្ងៃនេះនឹងកាន់តែងាយស្រួលសម្រាប់សិស្សរបស់ខ្ញុំ!
សើចឮខ្លាំង!! អាក្រក់ពេកខ្ញុំយឺតហើយប៉ុន្តែរីករាយដែលវាមានប្រយោជន៍។ 🙂
ទីបំផុត !!! ប្រកាសល្អបំផុតទីបំផុតខ្ញុំបានរកឃើញអ្វីមួយដែលពន្យល់យ៉ាងច្បាស់ពីកន្សោមធម្មតា…។
មានព័ត៌មានជាច្រើននៅទីនោះប៉ុន្តែវាកាន់តែពិបាកក្នុងការស្វែងរកអ្វីដែលងាយយល់។ ខ្ញុំរីករាយដែលខ្ញុំបានបំពេញចន្លោះនោះ។ 🙂
ស្វាគមន៍។
ហេខ្ញុំត្រូវការជំនួយខ្ញុំត្រូវធ្វើការស្រាវជ្រាវក្នុង / var / កំណត់ហេតុជាមួយទ្រង់ទ្រាយ៖ yymmdd ហើយកំណត់ហេតុកើតឡើងដូច ១៣០៩០១.១១-៣០៩០១១ ខ្ញុំត្រូវតែស្វែងរកទាំងអស់ដែលនៅចន្លោះថ្ងៃទី ១ ខែកញ្ញាដល់ថ្ងៃទី ១១ ខែតុលា , រឿងតែមួយគត់ដែលខ្ញុំបានធ្វើគឺត្រូវយកចេញខែកញ្ញាទាំងអស់ប៉ុន្តែខ្ញុំមិនដឹងពីរបៀបធ្វើខ្សែសង្វាក់ពេញលេញ:
ឧ។ ១៣០៩ [០-៣] ប្រគល់កំណត់ហេតុខ្ញុំមកវិញនៅចន្លោះថ្ងៃទី ១ ខែកញ្ញាដល់ថ្ងៃទី ៣០ ខែកញ្ញាប៉ុន្តែខ្ញុំមិនដឹងពីរបៀបយកខ្សែសង្វាក់ដដែលពីថ្ងៃទី ១ ដល់ថ្ងៃទី ១១ ខែតុលាទេ។
ដើម្បីធ្វើវាដោយប្រើកន្សោមធម្មតាគឺស្មុគស្មាញបន្តិច។ វាកើតឡើងចំពោះខ្ញុំថាអ្វីមួយដូចនេះអាចដំណើរការបាន៖
13(09[0-3]|10(0|1[01]))
វាគឺជាកន្សោមធម្មតាដែលបានពង្រីក។ អ្នកមិននិយាយថាឧបករណ៍មួយណាដែលអ្នកកំពុងប្រើទេដូច្នេះខ្ញុំមិនអាចប្រាប់អ្នកលំអិតបានទេ។
ទោះយ៉ាងណាក៏ដោយខ្ញុំគិតថានេះជាករណីជំនួសឱ្យការប្រើកន្សោមធម្មតាវាជាការប្រសើរក្នុងការធ្វើវាជាមួយការស្វែងរក។ អ្នកអាចសាកល្បងអ្វីមួយដូចនេះ៖
រក។ -Neemermt '01 sep '-a! -newermt '11 oct '-print
សំណាង។ សង្ឃឹមថានេះអាចជួយអ្នកបាន។
ដំបូងខ្ញុំចង់អរគុណអ្នកសម្រាប់ការងាររបស់អ្នកព្រោះទំព័រនេះស្ថិតក្នុង“ កំពូលទាំង ៣” នៃបណ្តាញលីនុចល្អបំផុត។
ខ្ញុំកំពុងអនុវត្តហើយមិនដឹងថាហេតុអ្វី RegExp នៅលើលេខទូរស័ព្ទមិនដំណើរការសម្រាប់ខ្ញុំហើយវាគឺថាខ្ញុំកំពុងបាត់ខ្លួន "-E" (ដែលខ្ញុំដឹងថាអរគុណដល់ការប្រកាសនេះ) ។
ខ្ញុំចង់សួរអ្នកប្រសិនបើអ្នកមិនដឹង pdf ឬគេហទំព័រល្អដែលមានលំហាត់នៅលើ RegExp ទោះបីជាមានការស្រមើលស្រមៃបន្តិចបន្តួចអ្នកអាចអនុវត្តការច្នៃប្រឌិតទាំងនោះដោយខ្លួនឯង។
ការស្វាគមន៍, Pablo ។
ល្អណាស់ខ្ញុំទើបតែអានទាំងអស់ហើយបាទឥឡូវខ្ញុំត្រូវការថ្នាំអាស្ពីរីន🙂
ការពន្យល់ដ៏ល្អបំផុតដែលខ្ញុំបានឃើញពីការបង្ហាញទៀងទាត់។ ខ្ញុំសូមអរគុណដល់អ្នកនិពន្ធដែលបានចែករំលែកការងារនេះ។
ស្វាគមន៍មួយ។
ខ្ញុំពិតជាចូលចិត្តការពន្យល់ល្អណាស់