နိဒါန်း
အဆိုပါ Linux ကို grep command ကို input ကို filtering များအတွက်နည်းလမ်းအဖြစ်အသုံးပြုပါသည်။
GREP ကို Global ပုံမှန်ဖော်ပြမှုပရင်တာကိုဆိုလိုတာပါထို့ကြောင့်ထိရောက်စွာအသုံးပြုနိုင်စေရန်အတွက်, သငျသညျ regular expressions ကိုအကြောင်းကိုအချို့သောဗဟုသုတအသိပညာများရှိသည်သငျ့သညျ။
ဤဆောင်းပါး၌, ငါသည်သင် grep command ကိုနားလည်ကူညီပေးပါမည်သည့်ဥပမာတစ်ခုအရေအတွက်ကိုပြသသွားမှာဖြစ်ပါတယ်။
09 ၏ 01
GREP အသုံးပြုခြင်းတစ်ဦးကဖိုင်မှတ်တမ်းခုနှစ်တွင်တစ်ဦးက String သည်ရှာရန်ရန်ကဘယ်လို
သငျသညျကိုအောက်ပါသားသမီးရဲ့စာအုပ်ခေါင်းစဉ်နှင့်အတူစာအုပ်တွေလို့ချေါတဲ့စာသားဖိုင်တိုမြင်ယောင်ကြည့်ပါ:
- ရော်ဘင်ဟုဒ်
- နည်းနည်းအနီစီးနင်းပါးပျဉ်း
- ပီတာပန်
- Goldilocks ပြီးတော့အဲဒီသုံးခုဝက်ဝံ
- Snow White ခုနစ်ထောင်ပြီး
- Pinnochio
- အဆိုပါဟက်ခုနှစ်တွင်ကြောင်
- အဆိုပါသုံးဦး Little ကဟူသည်မှာ
- အဆိုပါ Gruffalo
- ချာလီပြီးတော့အဆိုပါချောကလက်စက်ရုံ
နှုတ်ကပတ်တရားတော် "အဆိုပါ" ခေါင်းစဉ်၌သင်တို့ကိုအောက်ပါ syntax ကိုအသုံးပြုပါမယ်လို့နှင့်အတူအပေါငျးတို့သစာအုပ်များကိုရှာဖွေရန်:
အဆိုပါစာအုပ်များ grep
အောက်ပါရလဒ်များကိုပြန်လာသောလိမ့်မည်:
- Goldilocks ပြီးတော့အဲဒီသုံးခုဝက်ဝံ
- Snow White ခုနစ်ထောင်ပြီး
- အဆိုပါဟက်ခုနှစ်တွင်ကြောင်
- အဆိုပါသုံးဦး Little ကဟူသည်မှာ
- အဆိုပါ Gruffalo
- ချာလီပြီးတော့အဆိုပါချောကလက်စက်ရုံ
တစ်ခုချင်းစီကိုအမှု၌, စကားလုံး "အဆိုပါ" မီးမောင်းထိုးပြပါလိမ့်မည်။
"က" အစား၏ခေါင်းစဉ်များထဲမှ "အဆိုပါ" ထို့နောက်သူကပြန်ရောက်ပြီမဟုတ်ဘူးခဲ့မယ်ဆိုရင်ဒါရှာဖွေရေးကိစ္စတွင်အထိခိုက်မခံကြောင်းသတိပြုပါ။
အမှုလျစ်လျူရှုရန်သင့်အားအောက်ပါ switch ကို add နိုင်ပါတယ်:
--ignore-ကိစ္စတွင်စာအုပ်တွေ grep
အောက်မှာဖေါ်ပြတဲ့အတိုင်းကိုလည်းသင် -i switch ကိုသုံးနိုငျ:
စာအုပ်တွေ -i grep
09 ၏ 02
သံခိတ်အသုံးပြုခြင်းတစ်ဦးကဖိုင်မှတ်တမ်းခုနှစ်တွင်တစ်ဦးက String သည်ရှာရန်
အဆိုပါ grep command ကိုအလွန်အစွမ်းထက်သည်။ သငျသညျအကြိုးရလဒျ filter မှနည်းစနစ်ကိုက်ညီပုံစံများစွာသောလူကိုသုံးနိုင်သည်။
ဒီဥပမာထဲမှာ, ငါသုံးပြီးဖိုင်တစ်ဖိုင်ထဲမှာ string ကိုရှာသင်မည်သို့ပြပါလိမ့်မယ် သံခိတ် ။
သငျသညျအောကျပါအစကော့တလန်ရာအရပျအမညျမြားနှင့်အတူအရပ်တို့ကိုလို့ခေါ်တဲ့ဖိုင်တိုမြင်ယောင်ကြည့်ပါ:
aberdeen
aberystwyth
aberlour
inverurie
inverness
newburgh
အသစ်သောသမင်ဒရယ်
အသစ်က galloway
Glasgow
Edinburgh
သငျသညျနာမ၌ inver နှင့်အတူအပေါငျးတို့သသောအရပ်တို့ကိုမတှေ့ရချင်တယ်ဆိုရင်အောက်ပါ syntax ကိုအသုံးပြုပါ:
* သောအရပ်တို့ကိုမ inver grep
အဆိုပါခရေပွင့ (*) သံခိတ် 0 င်သို့မဟုတ်အများအပြားကိုဆိုလိုတာပါ။ သို့ဖြစ်လျှင်သင်သည် inver ဟုခေါ်ဝေါ်သောအရပ်၌သို့မဟုတ် inverness ဟုခေါ်ဝေါ်သောအရပ်၌ရှိပါကထိုကွောငျ့, နှစ်ဦးစလုံးပြန်ရောက်မည်ဖြစ်သည်။
သငျသညျကိုသုံးနိုင်သည်နောက်ထပ်သံခိတ်ကာလဖြစ်ပါတယ် (။ ) ။ သငျသညျတစ်ခုတည်းစာတစ်စောင်ကိုက်ညီဖို့ဒီကိုသုံးနိုင်သည်။
သောအရပ်တို့ကိုမ inver.r grep
အထက်ပါ command ကို inverurie နှင့် inverary ဟုခေါ်တွင်သောအရပ်တို့ကိုတွေ့ရပါလိမ့်မယ်ဒါပေမယ့်ကိုသာနှစ်ဦးကို r ကိုရဲ့အဖြစ်တစ်ခုတည်းကာလအားဖြင့်ခေါ်လိုက်ပါမယ်အကြားတစျသံခိတ်ရှိနိုငျသောကွောငျ့ invereerie ရှာတွေ့မှာမဟုတ်ဘူး။
အဆိုပါကာလများတွင်သံခိတ်အသုံးဝင်သည်ပေမယ့်သင်ရှာဖွေနေတဲ့စာသားရဲ့တစိတ်တပိုင်းအဖြစ်တဦးတည်းရှိပါကကြောင့်ပြဿနာများဖြစ်ပေါ်စေနိုင်ပါတယ်။
ဥပမာဒိုမိန်းအမည်များဒီ list ကိုကြည့်
- linux.about.com
- pcsupport.about.com
- mp3.about.com
- minecraft.about.com
- androidgames.about.com
- netforbeginners.about.com
- everydaylinuxuser.com
- google.co.uk
- google.au
- direct.gov.uk
သင်ရုံအောက်ပါ syntax ကို အသုံးပြု. ရှာဖွေနိုင်သူအပေါင်းတို့ကို about.coms ကိုရှာဖွေရန်:
* DOMAINNAME အကြောင်းကို grep *
: စာရင်းကိုအထဲတွင်အောက်ပါနာမကိုအမှီပါရှိသောလျှင်အထက်အမိန့်ပေးပြပ်မယ်လို့
- everydaylinuxuser.com/about.html
သငျသညျ, ထို့ကွောငျ့, အောက်ပါ syntax ကွိုးစားနိုင်:
grep * about.com DOMAINNAME
အောက်ပါနာမည်တစ်ခုဒိုမိန်းရှိခဲ့သည် မှလွဲ. ဤသည် ok အလုပ်လုပ်မယ်ဆိုတာ:
aboutycom.com
တကယ်ဟူသောဝေါဟာရကိုရှာအောက်ပါအတိုင်းသင် dot လွတ်မြောက်ရန်ဖို့လိုအပ်မယ်လို့ about.com:
\ .com DOMAINNAME အကြောင်းကို grep *
သငျသညျဖျောပွဖို့နောက်ဆုံးသံခိတ်သုညသို့မဟုတ်တဦးတည်းဇာတ်ကောင်များအတွက်ရပ်တည်ရသောမေးခွန်းအမှတ်အသားဖြစ်ပါတယ်။
ဥပမာ:
grep? ber PLACENAME
အထက်ပါ command ကို aberdeen, aberystwyth သို့မဟုတ်ပင် berwick ပြန်လာလိမ့်မယ်။
09 ၏ 03
grep အသုံးပြုခြင်းအစနှင့်လိုင်း၏အဆုံးမှာ STRING အတွက်ရှာရန်
အဆိုပါကာရက် (^) နှင့်ဒေါ်လာ ($) သင်္ကေတကိုသင်လိုင်းများ၏အစနှင့်အဆုံးတွင်ပုံစံများကိုရှာဖွေခွင့်ပြုသည်။
သငျသညျကိုအောက်ပါအသင်းအမည်များနှင့်အတူဘောလုံးလို့ခေါ်တဲ့ဖိုင်တိုမြင်ယောင်ကြည့်ပါ:
- Blackpool
- လီဗာပူးလ်
- မန်ချက်စတာစီးတီး
- Leicester စီးတီး
- မန်ချက်စတာယူနိက်တက်
- နယူးကာဆယ်လ်ယူနိုက်တက်
- မန်ချက်စတာ၏ FC အသင်းယူနိုက်တက်
သငျသညျမန်ချက်စတာနှင့်အတူစတင်ခဲ့ပြီးသမျှသောအသင်းများကိုရှာဖွေချင်တယ်ဆိုရင်အောက်ပါ syntax ကိုအသုံးပြုပါလိမ့်မယ်:
grep ^ မန်ချက်စတာအသင်းများ
အထက်ပါ command ကိုမန်ချက်စတာစီးတီးနှင့်မန်ချက်စတာယူနိုက်တက်သို့ပြန်လာပေမယ့်မန်ချက်စတာ၏ယူနိုက်တက် FC မဟုတ်ဘူး။
တနည်းအားဖြင့်သင်သည်အောက်ပါ syntax ကို အသုံးပြု. ယူနိုက်တက်နှင့်အတူအဆုံးသတ်အပေါငျးတို့သအသင်းများကိုရှာတှေ့နိုငျ:
grep ယူနိုက်တက် $ အဖွဲ့များ
အထက်ပါ command ကိုမန်ချက်စတာယူနိုက်တက်နှင့်နယူးကာဆယ်လ်ယူနိုက်တက်ပြန်လာပေမယ့်မန်ချက်စတာ၏ယူနိုက်တက် FC မဟုတ်ဘူး။
09 ၏ 04
grep အသုံးပြုခြင်းကိုက်ညီမှုများအရေအတွက်ရေတွက်
သငျသညျ grep သုံးပြီးပုံစံကိုက်ညီပေမယ့်သင်ရုံသင်အောက်ပါ syntax ကိုသုံးနိုင်သည်ရှိပါတယ်မည်မျှသိလိုကြောင်းအမှန်တကယ်လိုင်းများပြန်လာချင်ကြပါဘူး အကယ်. :
grep -c ပုံစံ inputfile
ပုံစံနှစ်ကြိမ်ထို့နောက်ကိုက်ညီခဲ့သည်ဆိုပါကအရေအတွက်က 2 ပြန်ရောက်မည်ဖြစ်သည်။
09 ၏ 05
grep သုံးပြီးကိုက်ညီမှုမရှိပါအားလုံးသည်အဆိုပါသတ်မှတ်ချက်များကိုရှာဖွေခြင်း
သငျသညျအောကျပါအတိုငျးစာရငျးနိုင်ငံများနှင့်အတူအရပ်ဌာနအမည်များစာရင်းတစ်ခုရှိတယ်ဆိုကြပါစို့:
- aberdeen စကော့တလန်
- စကော့တလန် Glasgow
- အင်္ဂလန်လီဗာပူးလ်
- colwyn ပင်လယ်အော်
- လန်ဒန်အင်္ဂလန်
သငျသညျ colwyn ပင်လယ်အော်ကသူနဲ့ဆက်စပ်ခြင်းမရှိတိုင်းပြည်ရှိကြောင်းသတိထားမိကြပေမည်။
တိုင်းပြည်တစ်ပြည်နှင့်အတူအပေါငျးတို့သသောအရပ်တို့ကိုမရှာသငျသညျအောကျပါအ syntax သုံးလို့ရတယ်:
grep မြေယာ $ သောနေရာများ
ရလဒ်ပြန် colwyn ပင်လယ်အော် မှလွဲ. အားလုံးအရပ်ဖြစ်လိမ့်မည်။
ဒီအသိသာသာ (ခဲသိပ္ပံနည်းကျ) ပွညျ၌အဆုံးသတ်ထားတဲ့နေရာအလုပ်လုပ်ပါတယ်။
သင့်အနေဖြင့်အောက်ပါ syntax အသုံးပြုပြီး select လုပ်ပါပြောင်းပြန်လှန်လိုက်ပါနိုင်သည်
မြေယာ $ သောအရပ်တို့ကိုမ -v grep
ဤမြေနှင့်အတူအဆုံးသတ်မပြုခဲ့သမျှသောအရပ်တို့ကိုတွေ့ပါလိမ့်မယ်။
09 ၏ 06
grep အသုံးပြုခြင်းဖိုင်ထဲမှာ Empty လိုင်းများကိုရှာပါရန်မည်သို့
သငျသညျအောကျပါအတိုငျးကဗလာလိုင်းတွေ့သည့်အခါဖိုင်ဖတ်နေရပ်ထားတဲ့တတိယပါတီလျှောက်လွှာအသုံးပြုသည့် input ကိုဖိုင်တိုမြင်ယောင်ကြည့်ပါ:
- aberdeen စကော့တလန်
- inverness စကော့တလန်
- အင်္ဂလန်လီဗာပူးလ်
- colwyn ပင်လယ်အော် Wales
လျှောက်လွှာလီဗာပူးပြီးနောက်လိုင်းမှရရှိသွားတဲ့အခါ colwyn ပင်လယ်အော်လုံးဝလွဲချော်နေသည်အဓိပ္ပာယ်ဖတ်နေကိုရပ်တန့်ပါလိမ့်မယ်။
သင့်အနေဖြင့်အောက်ပါ syntax နှင့်အတူအလွတ်လိုင်းများရှာဖွေရန် grep သုံးနိုငျ:
grep ^ $ သောနေရာများ
ဒါကြောင့်ပဲအလွတ်လိုင်းများပြန်လည်ရောက်ရှိဘာဖြစ်လို့လဲဆိုတော့ကံမကောင်းစွာဒီအထူးသဖြင့်အသုံးဝင်သောမဟုတ်ပါဘူး။
သငျသညျသင်တန်းကိုအောက်ပါအတိုင်းဖိုင်ကိုတရားဝင်သည်ဆိုပါကကြည့်ရှုရန်စစ်ဆေးမှုများအဖြစ်အလွတ်လိုင်းများ၏နံပါတ်တစ်ရေတွက်ရနိုင်
grep -c ^ $ သောနေရာများ
ဒါဟာသို့သော်သင်သည်ထိုသူတို့နေရာတွင်အစားထိုးနိုင်အောင်တစ်ဦးအလွတ်လိုင်းရှိသည်သောလိုင်းနံပါတ်များကိုသိရန်ပိုမိုအသုံးဝင်ပါလိမ့်မယ်။ သင့်အနေဖြင့်အောက်ပါ command နဲ့ပြုပါနိုင်သည်
grep -n ^ $ သောနေရာများ
09 ၏ 07
grep အသုံးပြုခြင်းကြီး၏ Strings ဒါမှမဟုတ်စာလုံးအသေးဇာတ်ကောင်သည်ရှာရန်ရန်ကဘယ်လို
grep အသုံးပြုခြင်းကိုသင်အောက်ပါ syntax ကို အသုံးပြု. ကြီးဇာတ်ကောင်များတဲ့ဖိုင်ထဲမှာထားတဲ့လိုင်းတွေကိုဆုံးဖြတ်ရန်နိုင်သည်
grep '[AZ]' 'ဖိုင်အမည်
အဆိုပါစတုရန်းကွင်းခတ် [] သင်ဇာတ်ကောင်များ၏အကွာအဝေးကိုဆုံးဖြတ်ရန်ကြကုန်အံ့။ အထက်ပါဥပမာမှာသူက A နှင့် Z. အကြားဖြစ်သည့်မဆိုဇာတ်ကောင်ကိုက်ညီ
ထိုကြောင့်သင်သည်အောက်ပါ syntax ကိုသုံးနိုင်သည်စာလုံးအသေးစာလုံးများကိုကိုက်ညီ:
grep '[az]' 'ဖိုင်အမည်
သငျသညျစာလုံးနှင့်မ NUMERIC သို့မဟုတ်အခြားသင်္ကေတများကိုသာကိုက်ညီချင်လျှင်အောက်ပါ syntax ကိုသုံးနိုင်သည်:
grep '[a-zA-Z ကို]' 'ဖိုင်အမည်
အောက်မှာဖေါ်ပြတဲ့အတိုင်းသင်ကဂဏန်းတွေနဲ့အတူတူလုပျနိုငျ:
grep '[0-9]' 'ဖိုင်အမည်
09 ၏ 08
grep အသုံးပြုခြင်းပုံစံများထပ်ကျော့သည်ရှာဖွေနေ
သင်တစ်ဦးပြန်လုပ်ပုံစံများအတွက်ရှာဖွေ curly bracket {} ကိုသုံးနိုင်သည်။
အောက်ပါအတိုင်းသကဲ့သို့သင်တို့ကိုဖုန်းနံပါတ်များကိုအတူဖိုင်တစ်ခုရှိတယ်ဆိုကြပါစို့:
- 055-1234
- 055-4567
- 555-1545
- 444-0167
- 444-0854
- 4549-2234
- x44-1234
သငျသညျအရေအတွက်ကို၏ပထမအစိတ်အပိုင်းကိုသုံးဂဏန်းဖြစ်ရန်လိုအပ်သည်ကိုသိရန်နှင့် အကယ်. သင်ဤပုံစံမကိုက်ညီပါဘူးသောလိုင်းများကိုရှာဖွေချင်တယ်။
ယခင်ပုံနမူနာကနေသင်တို့ကို [0-9] ဖိုင်တစ်ဖိုင်အားလုံးကိုနံပါတ်များကိုပြန်လာကြောင်းကိုငါသိ၏။
(-) ဒီဥပမာမှာတော့ကျွန်တော်တစ်ဦးတုံးတိုအားဖြင့်နောက်တော်သို့လိုက်သုံးနံပါတ်များနှင့်အတူစတင်ကြောင်းလိုင်းများချင်တယ်။ သင့်အနေဖြင့်အောက်ပါ syntax နဲ့လုပျနိုငျ:
grep "^ [0-9] [0-9] [0-9] -" နံပါတ်များ
ကျနော်တို့ယခင်ဥပမာအနေဖြင့်သိကြသကဲ့သို့ကာရက် (^) ကိုလိုင်းအောက်ပါပုံစံတွေနဲ့စတင်ရမယ်လို့ဆိုလိုပါတယ်။
ဒီက 3 ဂဏန်းကိုက်ညီသုံးကြိမ်ပါဝင်သည်အမျှအဆိုပါ [0-9] 0 နှင့် 9. အကြားမည်သည့်အရေအတွက်ကိုရှာဖွေပါလိမ့်မယ်။ နောက်ဆုံးအနေနဲ့တစ်တုံးတိုသုံးခုနံပါတ်များကိုအောင်မြင်ရမည်ဟုဖျောညှနျးဖို့တုံးတိုရှိသေး၏။
အဆိုပါ curly bracket အသုံးပြုခြင်းအားဖြင့်အောက်ပါအတိုင်းသကဲ့သို့သင်တို့ရှာဖွေရေးသေးငယ်စေနိုင်သည်
grep "^ [0-9] \ {3 \} -" နံပါတ်များ
ဒီဟုဘာပုံမှန်စကားရပ်၏တစ်စိတ်တစ်ပိုင်းအဖြစ်ပေမယ့်အနှစ်သာရအတွက်အလုပ်လုပ်တယ်သို့မှသာအဆိုပါမျဉ်းစောင်း {3} 0 င် 9 သုံးကြိမ်အကြားမည်သည့်အရေအတွက်ကိုဆိုလိုသည် [0-9] က {bracket ကဖြစ်ပါတယ်ရှောင်ကွင်းနိုင်ပါ။
အောက်မှာဖေါ်ပြတဲ့အတိုင်း curly bracket လည်းသုံးနိုင်တယ်:
{5,10}
{5}
အဆိုပါ {5,10} အဆိုပါ {5} ဇာတ်ကောင်အနည်းဆုံး 5 ကြိမ်ထပ်ခါတလဲလဲရမည်ဖြစ်သည်ဒါပေမယ့်အဲဒါထက်ပိုပြီးဖြစ်နိုင်သည်ကိုဆိုလိုတယ်သော်လည်းအဘို့ကိုရှာဖွေလျက်ရှိဇာတ်ကောင်အနည်းဆုံး 5 ကြိမ်ထပ်ခါတလဲလဲပေမယ့် 10 ထက်မပိုရမည်ဖြစ်သည်ဆိုလိုသည်။
09 ၏ 09
grep အသုံးပြုခြင်းအခြားတပ်မှူးများကအဆိုပါ Output အသုံးပြုခြင်း
ဤရွေ့ကား, ကျနော်တို့တစ်ဦးချင်းစီဖိုင်တွေအတွင်းကိုက်ညီပုံစံကြည့်ရှုခဲ့ကြပေမယ့် grep ပုံစံကိုက်ညီခြင်းများအတွက် input ကိုကဲ့သို့သောအခြား command တွေကနေအထွက်ကိုသုံးနိုင်သည်။
ဒီတစ်ဦးကအကြီးအဥပမာတက်ကြွဖြစ်စဉ်များ lists သော ps command ကို အသုံးပြု. ဖြစ်ပါတယ်။
ဥပမာအားဖြင့်အောက်ပါ command ကို run:
ps -ef
သင်၏ system ပေါ်တွင်အပြေးဖြစ်စဉ်များအားလုံးသည်ပြသပါလိမ့်မည်။
အောက်မှာဖေါ်ပြတဲ့အတိုင်းသင်တစ်ဦးအထူးသဖြင့်ပြေးဖြစ်စဉ်ကိုရှာ grep သုံးနိုငျ:
ps -ef | grep firefox