3.2 Searching and Extracting Data from Files (1): Combinations & Command Line Pipes

Share this article to...

Combinations

            Redirection Operators တွေ ပထမဆုံးပေါင်းစည်းမှုအဖြစ် Standard Output နှင့် Standard Error Output တို့ကို ဖိုင်တဖိုင်ထဲသို့ အတူရေးကြည့်ပါမယ်။ “&>” နှင့် “&>>” Operators တွေကို သုံးမှာဖြစ်ပြီး “&” ဟာ Channel 1 နှင့် Channel 2 တို့ရဲ့ပေါင်းစည်းမှု၊ အတူယှဥ်တွဲအသုံးပြုမှုကို ပြတာပါ။ “&>” ဟာ ဖိုင်ထဲမှာရှိနေပြီးသား Content တွေကို Overwrite လုပ်လိုက်မှာပါ။ “&>>” ကတော့ ဖိုင်ရဲ့အဆုံးမှာ အသစ်ထပ်ဖြည့်သွားမှာမျိုးပါ။ Operators နှစ်မျိုးလုံးဟာ ဖိုင်မရှိသေးတာဆိုလျင်တော့ အသစ်ဖန်တီးပေးသွားမှာပါ။

“cut” Command အသုံးပြုထားတဲ့ ဥပမာလေးကို ကြည့်ကြပါစို့။

“cut” Command ဟာ Input File ထဲမှ အချို့ Fields တွေကို (အခု ဥပမာမှာ 3rd Field – တတိယမြောက် Column) ‘-f’ Option သုံးပြီး ဖြတ်ထုတ်၊ ဆွဲထုတ်ကြည့်တာပါ။ Field တစ်ခုကို ရှာဖို့ရာ ‘-d’ Option ဖြင့် “Delimiter” အဖြစ် Field တခုနှင့် တခုကြားခြားပေးထားတဲ့ Character ကိုလည်း ဖော်ပြပေးရပါတယ်။ အခုဒီမှာတော့ “Delimiter” ဟာ “/” Character ဖြစ်မှာပါ။

“cut” Command အကြောင်းပိုမိုသိရှိနိုင်ဖို့ Man Page ခေါ်ကြည့်နိုင်ပါတယ်။

Command Line Pipes

            Redirection ကို မတူညီတဲ့ နောက် Command တခု၊ အခြား Command တခုအတွက် ဆက်လက်လုပ်ဆောင်နိုင်ဖို့ ပထမ Command ရဲ့ ရလဒ်ကို သိမ်းဖို့ရာ အသုံးပြုကြတာများပါတယ်။ Process တခုနှင့်တခုကြား၊ Command တခုနှင့်တခုကြား Data တွေ အပေးအယူလုပ်ဖို့ဆိုတာ အတော်လေးငြီးငွေ့ဖွယ်ဖြစ်ပြီး ရှုပ်ထွေးနိုင်ပါတယ်။ အဲ့ဒီလိုမဖြစ်ဖို့ Commands တွေကို Pipes တွေသုံးပြီး လက်ဆင့်ကမ်းပြီး ချိတ်ဆက်သွားနိုင်ပါတယ်။ တစ်နည်းပြောရလျင် ပထမ Command ရဲ့ Output ဟာ ဒုတိယ Command ရဲ့ Input အဖြစ် အလိုအလျောက်ဖြစ်လာမှာပါ။ အဲ့ဒီလို ချိတ်ဆက်မှုမျိုးကို “|” Vertical Bar Operator သုံးပြီး ပြုလုပ်နိုင်ပါတယ်။

အထက်ပါဥပမာမှာ “Pipe” Operator ရဲ့ နောက်မှာရှိနေတဲ့ “less” Command ဟာ File Content ကို ပြမယ့်နည်းလမ်းကို ပြင်လိုက် ပြောင်းလိုက်တာပါပဲ။ “less” Command ဟာ Text File Content ကို တကြိမ်မှာ တမျက်နှာစာ One Page စီ ပြပေးသွားမှာပါ။ ဖော်ပြခဲ့ဖူးတဲ့ အပိုင်းတွေထဲက Man Pages တွေကို ပြပေးဖို့ရာလည်း “less” Command ကိုသုံးပါတယ်။

တစ်ချိန်ထဲမှာ Pipes အများကြီးကို သုံးနိုင်ပါတယ်။ Input အဖြစ် ရယူလိုက်ကြတဲ့ Intermediate Commands တွေဟာ Filters လို့ခေါ်တဲ့ ရွေးချယ်စစ်ထုတ်ပေးတဲ့ Output ကို ပြန်ထုတ်ပေးကြပါတယ်။ “ls -l” Command နှင့် Output ထဲမှ ပထမဆုံး ဆယ်ကြောင်းမှာရှိမယ့် Words အရေအတွက်ကို ရေတွက်ဖို့ ကြိုးစားကြပါစို့။ အဲ့ဒီအတွက် ပထမဆုံး ဆယ်ကြောင်းကို ပြပေးမယ့် “head” Command ကို သုံးပြီး ရေတွက်ဖို့ရာ “wc” Command ကိုဆက်သုံးမှာပါ။

ဖော်ပြခဲ့ဖူးသလို “head” Command ဟာ မူလ Default အားဖြင့်တော့ Text File Content တွေထဲမှ ပထမဆုံး ဆယ်ကြောင်းကိုပဲ ပြပါတယ်။ Options အချို့သုံးပြီး ပြုပြင်နိုင်ပါတယ်။ ပိုမိုသိရှိဖို့ Man Page မှာ ကြည့်ရပါမယ်။

ဖိုင်တဖိုင်ရဲ့ အဆုံးသတ်နားကို ပြပေးမယ့် “tail” Command ဆိုတာ ရှိပါသေးတယ်။ မူလ Default အားဖြင့်တော့ နောက်ဆုံး ဆယ်ကြောင်းကိုပဲ ပြပေးမှာပေမယ့် “head” Command ကဲ့သို့ပဲ ပြုပြင်အသုံးပြုနိုင်တာမို့ Man Page မှာ အသေးစိတ်ကြည့်လို့ရပါတယ်။

Note: “-f” Option သုံးပြီး Update ပြုလုပ်နေဆဲဖိုင်ရဲ့ နောက်ဆုံးစာကြောင်းတွေကို အချိန်ဖြင့်တပြေးညီ တိုက်ရိုက်ကြည့်နိုင်ပါသေးတယ်။ ဆောင်ရွက်နေဆဲ၊ တခုခုပြုလုပ်နေဆဲ Activity တွေကို မှတ်ထားပေးတဲ့ “syslog” လို ဖိုင်မျိုးကို စောင့်ကြည့်တဲ့အခါ၊ Monitoring ပြုလုပ်တဲ့အခါ အလွန်ပဲ အသုံးဝင်ပါတယ်။

“wc” Word Count Command ဟာ မူလ Default အားဖြင့်တော့ ဖိုင်တဖိုင်ထဲမှ စာကြောင်းရေ (Lines)၊ စကားစုအရေအတွက် (Words)၊ စာလုံးရေ (Characters or Bytes) ဖိုင်အရွယ်အစားတွေကို ရေတွက်ဖို့ရာ သုံးပါတယ်။ “-w” Option ဟာ ရွေးထုတ်ထားတဲ့စာကြောင်းတွေထဲက စာလုံးတွေကိုပဲ ရေတွက်မှာပါ။ အသုံးအများဆုံး Option ကတော့ စာကြောင်းရေကို ရေတွက်ပေးမယ့် “-l” Option နှင့် Bytes ကိုပဲ ရေတွက်ပေးမယ့် “-c” Option တွေပါ။ ဒီ Command အတွက် ပိုမိုသိရှိနိုင်ဖို့ Man Page ကိုပဲ ညွှန်းပါရစေ။