សេចក្តីណែនាំ
ពាក្យបញ្ជា grep លីនុចត្រូវបានប្រើជាវិធីសាស្ត្រសម្រាប់ច្រោះបញ្ចូល។
GREP តំណាងឱ្យម៉ាស៊ីនបោះពុម្ភផ្សាយទូទៅរបស់សកលលោកហើយដូច្នេះដើម្បីប្រើវាឱ្យមានប្រសិទ្ធភាពអ្នកគួរតែមានចំនេះដឹងខ្លះអំពីកន្សោមធម្មតា។
នៅក្នុងអត្ថបទនេះខ្ញុំនឹងបង្ហាញអ្នកនូវឧទាហរណ៍មួយចំនួនដែលនឹងជួយអ្នកឱ្យយល់ពីពាក្យបញ្ជា grep ។
01 នៃ 09
តើធ្វើដូចម្តេចដើម្បីស្វែងរកខ្សែអក្សរក្នុងឯកសារមួយដោយប្រើប្រាស់ GREP
ស្រមៃថាអ្នកមានឯកសារអត្ថបទមួយដែលមានឈ្មោះថាសៀវភៅដែលមានចំណងជើងសៀវភៅកុមារដូចតទៅ:
- Robin Hood
- សេះជិះតិចតួច
- Peter Pan
- Goldilocks និងសត្វខ្លាឃ្មុំទាំងបី
- ព្រិលពណ៌សនិងមនុស្សតឿប្រាំពីរនាក់
- Pinnochio
- ឆ្មានៅក្នុងមួក
- សត្វជ្រូកតូចបី
- Gruffalo នេះ
- Charlie និងរោងចក្រសូកូឡា
ដើម្បីរកសៀវភៅទាំងអស់ដែលមានពាក្យ "The" ក្នុងចំណងជើងអ្នកនឹងប្រើវាក្យសម្ព័ន្ធដូចខាងក្រោម:
grep សៀវភៅ
លទ្ធផលដូចខាងក្រោមនឹងត្រូវបានត្រឡប់មកវិញ:
- Goldilocks និងសត្វខ្លាឃ្មុំទាំងបី
- ព្រិលពណ៌សនិងមនុស្សតឿប្រាំពីរនាក់
- ឆ្មានៅក្នុងមួក
- សត្វជ្រូកតូចបី
- Gruffalo នេះ
- Charlie និងរោងចក្រសូកូឡា
ក្នុងករណីនីមួយៗពាក្យ "The" នឹងត្រូវបានបន្លិច។
ចំណាំថាការស្វែងរកគឺប្រកាន់អក្សរតូចធំដូច្នេះប្រសិនបើចំណងជើងមួយមាន "A" ជំនួស "The" ពេលនោះវានឹងមិនត្រូវបានត្រឡប់ទេ។
ដើម្បីមិនអើពើករណីអ្នកអាចបន្ថែមចំណុចខ្សាច់ដូចខាងក្រោម:
grep សៀវភៅ - មិនល្អ - ករណី
អ្នកក៏អាចប្រើប្ដូរ -i ដូចខាងក្រោម:
grep -i សៀវភៅ
02 នៃ 09
ស្វែងរកខ្សែអក្សរនៅក្នុងឯកសារដោយប្រើតួអក្សរជំនួស
ពាក្យបញ្ជា grep គឺមានអនុភាពខ្លាំងណាស់។ អ្នកអាចប្រើបច្ចេកទេសផ្គូផ្គងលំនាំច្រើនដើម្បីត្រងលទ្ធផល។
នៅក្នុងឧទាហរណ៍នេះខ្ញុំនឹងបង្ហាញអ្នកអំពីរបៀបស្វែងរកខ្សែអក្សរនៅក្នុងឯកសារដោយប្រើ អក្សរជំនួស ។
ស្រមៃថាអ្នកមានឯកសារមួយដែលមានឈ្មោះថាកន្លែងដែលមានឈ្មោះទីកន្លែងស្កុតឡេនដូចតទៅ:
aberdeen
aberystwyth
aberlour
inverurie
inverness
newburgh
ក្ដាន់ថ្មី
galloway ថ្មី
glasgow
edinburgh
ប្រសិនបើអ្នកចង់ស្វែងរកទីកន្លែងទាំងអស់ដោយប្រើឈ្មោះប្រើឈ្មោះប្រើវាក្យសម្ពន្ធខាងក្រោម:
grep inver * កន្លែង
សញ្ញាផ្កាយ (*) មានចំនួន 0 ឬច្រើន។ ដូច្នេះប្រសិនបើអ្នកមានកន្លែងដែលហៅថា inverness ឬកន្លែងដែលហៅថា inverness មួយបន្ទាប់មកទាំងពីរនឹងត្រូវបានត្រឡប់មកវិញ។
តួអក្សរជំនួសមួយទៀតដែលអ្នកអាចប្រើគឺកំឡុងពេល (។ ) ។ អ្នកអាចប្រើវាដើម្បីផ្គូផ្គងតួអក្សរមួយ។
grep inver.r កន្លែង
ពាក្យបញ្ជាខាងលើនឹងរកឃើញកន្លែងដែលហៅថា inverurie និង inverary ប៉ុន្តែមិនអាចរកឃើញ invereerie ព្រោះវាអាចមានតែតួអក្សរជំនួសមួយរវាងពីរ R ដូចដែលបានចង្អុលបង្ហាញដោយរយៈពេលតែមួយ។
តួអក្សរជំនួសមានប្រយោជន៍ប៉ុន្តែវាអាចបង្កបញ្ហាប្រសិនបើអ្នកមានផ្នែកមួយនៃអត្ថបទដែលអ្នកកំពុងស្វែងរក។
ឧទាហរណ៍មើលទៅបញ្ជីឈ្មោះដែននេះ
- linux.about.com
- pcsupport.about.com
- mp3.about.com
- minecraft.about.com
- androidgames.about.com
- netforbeginners.about.com
- dailylinuxuser.com
- google.co.uk
- google.au
- direct.gov.uk
ដើម្បីស្វែងរក about.com ទាំងអស់អ្នកគ្រាន់តែអាចស្វែងរកដោយប្រើវាក្យសម្ព័ន្ធដូចខាងក្រោម:
grep * អំពី * ឈ្មោះដែន
ពាក្យបញ្ជាខាងលើនឹងធ្លាក់ចុះបើបញ្ជីមានឈ្មោះដូចខាងក្រោម:
- dailylinuxuser.com/about.html
ដូច្នេះអ្នកអាចព្យាយាមវាក្យសម្ព័ន្ធដូចខាងក្រោម:
grep * about.com ឈ្មោះដែន
វានឹងដំណើរការល្អលុះត្រាតែមានដែនដែលមានឈ្មោះដូចខាងក្រោម:
aboutycom.com
ដើម្បីស្វែងរកពិតអំពីពាក្យ about.com អ្នកនឹងត្រូវការគេចផុតពីចំណុចដូចខាងក្រោម:
grep * អំពីឈ្មោះដែន .com
តួអក្សរជំនួសចុងក្រោយដើម្បីបង្ហាញអ្នកគឺជាសញ្ញាសួរដែលតំណាងឱ្យលេខសូន្យឬតួអក្សរមួយ។
ឧទាហរណ៍:
greetings
ពាក្យបញ្ជាខាងលើនឹងត្រឡប់មកវិញ aberdeen aberystwyth ឬសូម្បីតែ berwick ។
03 នៃ 09
ស្វែងរកខ្សែអក្សរនៅដើមដំបូងនិងបញ្ចប់នៃបន្ទាត់ដោយប្រើ grep
សញ្ញា (^) និងនិមិត្តសញ្ញាដុល្លារ ($) អនុញ្ញាតឱ្យអ្នកស្វែងរកគំរូនៅដើមនិងចុងបន្ទាត់។
ស្រមៃថាអ្នកមានឯកសារដែលមានឈ្មោះថាបាល់ទាត់ជាមួយឈ្មោះក្រុមដូចខាងក្រោម:
- Blackpool
- ហង្សក្រហម
- Manchester City
- ទីក្រុង Leicester
- ក្រុម Manchester United
- Newcastle United
- ក្លឹប FC របស់ Manchester
ប្រសិនបើអ្នកចង់ស្វែងរកក្រុមទាំងអស់ដែលចាប់ផ្តើមជាមួយក្រុម Manchester អ្នកនឹងប្រើវាក្យសម្ពន្ធខាងក្រោម:
ក្រុម Manchester ក្រុមការងារ
ពាក្យបញ្ជាខាងលើនឹងត្រលប់ទៅ Manchester City និង Manchester United ប៉ុន្តែមិនមែនជា FC របស់ Manchester Manchester ឡើយ។
ជាជម្រើសអ្នកអាចរកឃើញក្រុមទាំងអស់ដែលបញ្ចប់ដោយ United តាមរយៈវាក្យសម្ព័ន្ធដូចខាងក្រោម:
grep ក្រុម United ដុល្លារ
ពាក្យបញ្ជាខាងលើនឹងត្រលប់ទៅ Manchester United និង Newcastle United ប៉ុន្តែមិនមែនជា FC របស់ Manchester Manchester ឡើយ។
04 នៃ 09
រាប់ចំនួនផ្គូផ្គងដោយប្រើ grep
ប្រសិនបើអ្នកមិនចង់ត្រឡប់បន្ទាត់ពិតប្រាកដដែលផ្គូផ្គងលំនាំដោយប្រើ grep ទេប៉ុន្តែអ្នកគ្រាន់តែចង់ដឹងថាតើមានមនុស្សប៉ុន្មានអ្នកអាចប្រើវាក្យសម្ព័ន្ធដូចខាងក្រោម:
grep -c សំណុំហ្វិចសមាសធាតុលំនាំដើម
ប្រសិនបើគំរូត្រូវបានផ្គូផ្គងពីរដងបន្ទាប់មកលេខ 2 នឹងត្រូវបានត្រឡប់។
05 នៃ 09
ស្វែងរកទាំងអស់លក្ខខណ្ឌដែលមិនត្រូវគ្នាដោយប្រើ grep
ស្រមៃថាអ្នកមានបញ្ជីឈ្មោះទីកន្លែងជាមួយប្រទេសដែលមានរាយនាមដូចខាងក្រោម:
- aberdeen scotland
- glasgow scotland
- liverpool
- ជ្រលង colwyn
- ឡុងដុងប្រទេសអង់គ្លេស
អ្នកប្រហែលជាបានកត់សម្គាល់ថាច្រាំងកូលវីយមិនមានប្រទេសណាមួយជាប់ពាក់ព័ន្ធនឹងវាទេ។
ដើម្បីស្វែងរកទីកន្លែងទាំងអស់ជាមួយប្រទេសមួយអ្នកអាចប្រើវាក្យសម្ព័ន្ធដូចខាងក្រោម:
grep land $ places
លទ្ធផលត្រឡប់នឹងជាកន្លែងទាំងអស់លើកលែងតែឆកសមុទ្រ colwyn ។
នេះជាក់ស្តែងធ្វើការតែកន្លែងដែលចប់នៅលើដី (វិទ្យាសាស្រ្តស្ទើរតែមិនមាន) ។
អ្នកអាចបម្លែងជម្រើសដោយប្រើវាក្យសម្ព័ន្ធដូចខាងក្រោម:
grep -v land $ places
នេះនឹងរកឃើញកន្លែងទាំងអស់ដែលមិនបានបញ្ចប់ជាមួយនឹងដីធ្លី។
06 នៃ 09
របៀបរកបន្ទាត់ទទេក្នុងឯកសារដោយប្រើ grep
ស្រមៃថាអ្នកមានឯកសារបញ្ចូលដែលត្រូវបានប្រើដោយកម្មវិធីភាគីទីបីដែលឈប់អានឯកសារនៅពេលដែលវារកឃើញបន្ទាត់ទទេដូចខាងក្រោម:
- aberdeen scotland
- scotland inverness
- liverpool
- colwyn bay wales
នៅពេលដែលកម្មវិធីទទួលបានបន្ទាត់បន្ទាប់ពី liverpool វានឹងបញ្ឈប់ការអានន័យកុយរវែលឆកថលត្រូវបានខកខានទាំងស្រុង។
អ្នកអាចប្រើ grep ដើម្បីស្វែងរកបន្ទាត់ទទេជាមួយវាក្យសម្ព័ន្ធដូចខាងក្រោម:
grep ^ $ places
ជាអកុសលវាមិនមានប្រយោជន៍ទេព្រោះវាគ្រាន់តែត្រឡប់បន្ទាត់ទទេ។
អ្នកប្រាកដជាអាចរាប់ចំនួនបន្ទាត់ទទេដែលជាមូលប្បទានប័ត្រដើម្បីពិនិត្យមើលថាតើឯកសារមានសុពលភាពដូចតទៅ:
grep -c ^ $ places
ទោះជាយ៉ាងណាក៏ដោយវានឹងមានប្រយោជន៍ច្រើនណាស់ដើម្បីដឹងពីលេខបន្ទាត់ដែលមានបន្ទាត់ទំនេរដើម្បីឱ្យអ្នកអាចជំនួសពួកគេបាន។ អ្នកអាចធ្វើវាជាមួយពាក្យបញ្ជាខាងក្រោម:
grep -n ^ $ places
07 នៃ 09
វិធីស្វែងរកខ្សែអក្សរនៃអក្សរធំឬអក្សរតូចដោយប្រើ grep
ដោយប្រើ grep អ្នកអាចកំណត់បន្ទាត់ណាមួយនៅក្នុងឯកសារដែលមានអក្សរធំដោយប្រើវាក្យសម្ព័ន្ធដូចខាងក្រោម:
grep '[AZ]' ឈ្មោះឯកសារ
ដង្កៀប [] [] អនុញ្ញាតឱ្យអ្នកកំណត់ជួរនៃតួអក្សរ។ នៅក្នុងឧទាហរណ៍ខាងលើវាផ្គូផ្គងតួអក្សរណាមួយដែលស្ថិតនៅចន្លោះ A និង Z ។
ដូច្នេះដើម្បីផ្គូផ្គងតួអក្សរតូចអ្នកអាចប្រើវាក្យសម្ព័ន្ធដូចខាងក្រោម:
grep '[az]' ឈ្មោះឯកសារ
បើអ្នកចង់ផ្គូផ្គងអក្សរតែមិនមែនលេខឬនិមិត្តសញ្ញាផ្សេងទៀតអ្នកអាចប្រើវាក្យសម្ព័ន្ធដូចខាងក្រោម:
grep '[a-zA-Z]' ឈ្មោះឯកសារ
អ្នកអាចធ្វើដូចគ្នាជាមួយនឹងលេខដូចខាងក្រោម:
grep '[0-9]' ឈ្មោះឯកសារ
08 នៃ 09
កំពុងរកមើលលំនាំដដែលៗដោយប្រើ grep
អ្នកអាចប្រើដង្កៀបរង្វិលជុំ {} ដើម្បីស្វែងរកលំនាំម្តងហើយម្តងទៀត។
ស្រមៃថាអ្នកមានឯកសារដែលមានលេខទូរស័ព្ទដូចខាងក្រោម:
- 055-1234
- 055-4567
- 555-1545
- 444-0167
- 444-0854
- 4549-2234
- x44-1234
អ្នកដឹងថាផ្នែកដំបូងនៃលេខត្រូវការខ្ទង់ទី 3 ហើយអ្នកចង់រកបន្ទាត់ដែលមិនត្រូវគ្នានឹងលំនាំនេះ។
ពីឧទាហរណ៍មុនអ្នកដឹងថា [0-9] ត្រឡប់លេខទាំងអស់ក្នុងឯកសារមួយ។
ក្នុងករណីនេះយើងចង់អោយបន្ទាត់ដែលចាប់ផ្តើមដោយលេខបីដែលបន្តដោយសហសញ្ញា (-) ។ អ្នកអាចធ្វើវាជាមួយវាក្យសម្ព័ន្ធដូចខាងក្រោម:
grep "^ [0-9] [0-9] [0-9] -" លេខ
ដូចដែលយើងបានដឹងពីឧទាហរណ៍មុនការ៉ាត់ (^) មានន័យថាបន្ទាត់ត្រូវចាប់ផ្តើមដោយលំនាំដូចខាងក្រោម។
[0-9] នឹងស្វែងរកលេខណាមួយរវាង 0 និង 9 ។ ក្នុងករណីនេះត្រូវបានរួមបញ្ចូល 3 ដងវាផ្គូផ្គងលេខ 3 ។ នៅចុងបញ្ចប់មានសហសញ្ញាមួយដើម្បីបញ្ជាក់ថាសហសញ្ញាត្រូវតែជោគជ័យលើលេខទាំងបី។
ដោយប្រើតង្កៀបអង្កាញ់អ្នកអាចធ្វើការស្វែងរកតូចជាងមុនដូចខាងក្រោម:
grep "^ [0-9] \ {3 \} -" លេខ
សញ្ញាតូចៗរត់ពី {តង្កៀបដូច្នេះវាធ្វើការជាផ្នែកមួយនៃកន្សោមធម្មតាប៉ុន្តែក្នុងន័យខ្លឹមសារដែលវានិយាយគឺ 0-9] {3} ដែលមានន័យថាលេខណាមួយរវាង 0 និង 9 បីដង។
តង្កៀបអង្កាញ់ក៏អាចត្រូវបានប្រើដូចខាងក្រោមដែរ:
{5,10}
{5,}
{5,10} មានន័យថាតួអង្គដែលកំពុងស្វែងរកត្រូវបានធ្វើម្តងទៀតយ៉ាងហោចណាស់ 5 ដងប៉ុន្តែមិនលើសពី 10 ហើយ {5,} មានន័យថាតួអក្សរត្រូវធ្វើឡើងវិញយ៉ាងហោចណាស់ 5 ដងប៉ុន្តែវាអាចច្រើនជាងនេះ។
09 នៃ 09
ប្រើលទ្ធផលពីពាក្យបញ្ជាផ្សេងទៀតដោយប្រើ grep
រហូតមកដល់ពេលនេះយើងបានមើលការផ្គូផ្គងលំនាំនៅក្នុងឯកសារនីមួយៗប៉ុន្តែ grep អាចប្រើលទ្ធផលពីពាក្យបញ្ជាផ្សេងទៀតជាការបញ្ចូលសម្រាប់ការផ្គូផ្គងលំនាំ។
ឧទាហរណ៏ដ៏អស្ចារ្យមួយនេះត្រូវបានប្រើពាក្យបញ្ជា ps ដែលរាយការដំណើរការសកម្ម។
ឧទាហរណ៍រត់ពាក្យបញ្ជាដូចខាងក្រោម:
ps -ef
ដំណើរការដំណើរការទាំងអស់នៅលើប្រព័ន្ធរបស់អ្នកនឹងត្រូវបានបង្ហាញ។
អ្នកអាចប្រើ grep ដើម្បីស្វែងរកដំណើរការរត់ពិសេសដូចខាងក្រោម:
ps -ef | grep firefox