دستور awk در لینوکس

دستور awk در لینوکس

علی مرادی

Awk یک زبان برنامه نویسی است که برای ویرایش داده ها و تولید گزارش ها استفاده می شود. زبان برنامه نویسی دستور awk نیازی به تدوین ندارد و به کاربر اجازه می دهد از متغیرها ، توابع عددی ، توابع رشته و عملکرهای logical استفاده کند.

Awk ابزاری است که یک برنامه نویس را قادر به نوشتن برنامه های کوچک اما مؤثر در قالب جمله هایی می کند که الگوهای متنی را که باید در هر خط یک فابل جستجو کنند و عملی را که باید هنگام یافتن یک مشابه در یک برنامه تعریف شود ، تعریف می کند. خط Awk بیشتر برای اسکن و پردازش الگو استفاده می شود. یک یا چند پرونده را جستجو می کند تا ببیند که آیا آنها دارای خطوطی هستند که با الگوهای مشخص شده مطابقت دارند و سپس اقدامات مرتبط را انجام می دهند.

Awk به اختصار نام توسعه دهندگان – Aho ، Weinberger and Kernighan است.

در ادامه با ما در شتابان هاست همراه باشید.

با AWK چه کاری می توانیم انجام دهیم؟

۱) عملیات AWK:

  1.  یک خط پرونده را بصورت خطی اسکن می کند.
  2.  هر خط ورودی را به قسمتها تقسیم می کند.
  3.  خط / فیلدهای ورودی را با الگوی مقایسه می کند.
  4.  عمل (های) را بر روی خطوط همسان انجام می دهد.

۲) مفید برای:

  1.  تبدیل پرونده های داده.
  2.  گزارش های فرمت شده را تهیه کنید.

۳) سازه های برنامه نویسی:

  1.  خطوط خروجی قالب بندی کنید
  2.  عملیات حسابی و رشته ای
  3.  مشروط و حلقه

نحو دستور:

awk options 'selection _criteria {action }' input-file > output-file

گزینه ها:

-f program-file : Reads the AWK program source from the file 
                  program-file, instead of from the 
                  first command line argument.
-F fs            : Use fs for the input field separator

دستورات نمونه:

مثال:
پرونده متن زیر را به عنوان پرونده ورودی برای همه موارد زیر در نظر بگیرید.

$cat > employee.txt
ajay manager account 45000
sunil clerk account 25000
varun manager sales 50000
amit manager account 47000
tarun peon sales 15000
deepak clerk sales 23000
sunil peon sales 13000
satvik director purchase 80000

۱)  رفتار پیش فرض Awk: به طور پیش فرض Awk تمام خط داده ها را از پرونده مشخص شده چاپ می کند:

$ awk '{print}' employee.txt

خروجی:

ajay manager account 45000
sunil clerk account 25000
varun manager sales 50000
amit manager account 47000
tarun peon sales 15000
deepak clerk sales 23000
sunil peon sales 13000
satvik director purchase 80000

در مثال بالا هیچ الگویی ارائه نشده است. بنابراین اعمال برای همه خطوط قابل استفاده است. پرینت اکشن بدون هیچ استدلالی تمام خط را بطور پیش فرض چاپ می کند ، بنابراین تمام خطوط پرونده را بدون شکست چاپ می کند.

۲) خطوطی را پرینت کنید که مطابق با الگوی داده شده باشد:

$ awk '/manager/ {print}' employee.txt

خروجی:

ajay manager account 45000
varun manager sales 50000
amit manager account 47000

در مثال بالا ، دستور awk تمام خطوط مطابق با “manager” را پرینت می کند.

۳) تقسیم یک خط در فیلدها: برای هر خط i.e ، رکورد awk ثبت شده را با کاراکتر whitespace به طور پیش فرض تقسیم می کند و آن را در متغیرهای $ n ذخیره می کند. اگر خط ۴ کلمه داشته باشد ، به ترتیب در $۱, $۲, $۳ و $۴  ذخیره می شود. همچنین ، $۰ کل خط را نشان می دهد.

$ awk '{print $1,$4}' employee.txt

خروجی:

ajay 45000
sunil 25000
varun 50000
amit 47000
tarun 15000
deepak 23000
sunil 13000
satvik 80000

در مثال بالا ، $۱ و $۴ به ترتیب زمینه های نام و دستمزد را نشان می دهد.

امیدوارم این مقاله براتون مفید بوده باشه.

ما رو تو شتابان هاست دنبال کنید. 🙂

برچسب ها: دستورات لینوکس

ارسال دیدگاه جدید