Awk: یادگیری اسکریپت نویسی شل با استفاده از دستور ترمینال awk

Awk: یادگیری اسکریپت نویسی شل با استفاده از دستور ترمینال awk

Awk: یادگیری اسکریپت نویسی شل با استفاده از دستور ترمینال awk

دستور "awk" در سیستم عامل های آزاد از نوع GNU / Linux یک دستور بسیار قدرتمند است که به ما کمک می کند هنگام پردازش داده ها از سایر دستورات یا دستورات فرمان کنترل بیشتری داشته باشیم. نام AWK از حروف اول نام خانوادگی نویسندگان آن گرفته شده است: آلفرد Aهو ، پیتر Wاینبرگر و برایان Kارنیغان

این دستور زبان اسکریپت نویسی را برای پردازش متن فراهم می کند که با استفاده از آن می توانیم: متغیرها را تعریف کنیم ، از رشته ها و عملگرهای حساب استفاده کنیم ، از کنترل جریان و چرخه ها استفاده کنیم و گزارش های قالب بندی شده تولید کنیم. در واقع ، Awk چیزی فراتر از یک دستور پردازش الگو است ، بلکه یک زبان تجزیه و تحلیل معنایی کامل است.

معرفی دستور "awk"

AWK یکی از اولین برنامه های محبوب کنسول برای مدیریت (مدیریت / استخراج) داده ها با به حداکثر رساندن عملکرد خطوط لوله UNIX بود. زبان ارائه شده توسط این برنامه در حال حاضر تقریباً در همه سیستم های عامل مدرن نوع UNIX استاندارد است ، به طوری که بخشی از مشخصات اساسی UNIX است ، بنابراین معمولاً به طور پیش فرض در اکثر آنها نصب شده است.

متداول ترین نحو آن این است: پرونده های 'program' awk و جایی که 'program' می تواند باشد: pattern {action} pattern {action}. این دستور ورودی پرونده را هر بار یک خط می خواند. هر ردیف به ترتیب با هر الگوی مقایسه می شود. برای هر الگوی منطبق با ردیف ، عمل مربوطه انجام می شود.

یک مثال ساده مانند:

awk -F: '$1=="root" {print}' /etc/passwd

اولین قسمت را اگر ریشه هر خط در / etc / passwd باشد می پرسد و با توجه به ":" با -F: به عنوان جدا کننده زمینه چاپ می کند.

نمونه مقدماتی Awk

مثالهای عملی

لیست پر کاربردترین دستورات

لیستی را مشاهده کنید که بر اساس تاریخچه ترمینال سیستم مرتب شده از کمترین و کمترین استفاده شده است.

history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head

به عنوان مثال:

مثال 1: دستور awk

نمودار (جدول) با تعداد اتصالات برای هر میزبان

یک نمودار مبتنی بر متن ASCII ایجاد کنید که تعداد کل اتصالات از میزبان به هر آدرس IP را نشان دهد.

netstat -an | grep ESTABLISHED | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | awk '{ printf("%s\t%s\t",$2,$1) ; for (i = 0; i < $1; i++) {printf("*")}; print "" }'

به عنوان مثال:

مثال 2: دستور awk

فهرست راهنماها براساس اندازه

با استفاده از حروف g ، m و k ، لیست دایرکتوری های مسیر فعلی را از بزرگترین تا کوچکترین چاپ کنید که برچسب های مربوط به اندازه آنها را نشان می دهد.

du --max-depth=1 | sort -r -n | awk '{split("k m g",v); s=1; while($1>1024){$1/=1024; s++} print int($1)" "v[s]"\t"$2}'

به عنوان مثال:

مثال 3: دستور awk

نمایش ترافیک از یک رابط شبکه

مصرف داده ورودی و خروجی را بصورت آنلاین بر حسب کیلوبایت (kb) برای یک رابط شبکه مشخص مشاهده کنید.

while [ /bin/true ]; do OLD=$NEW; NEW=`cat /proc/net/dev | grep eth0 | tr -s ' ' | cut -d' ' -f "3 11"`; echo $NEW $OLD | awk '{printf("\rin: % 9.2g\t\tout: % 9.2g", ($1-$3)/1024, ($2-$4)/1024)}'; sleep 1; done

به عنوان مثال:

یک سری شماره فیبوناچی بدست آورید

لیستی از اعداد کمیت X را ایجاد کنید که به دنبال الگوی فیبوناچی دارای 2 عدد پایه برای ساخت است.

seq 50| awk 'BEGIN {a=1; b=1} {print a; c=a+b; a=b; b=c}'

به عنوان مثال:

مثال 5: دستور awk

لیست گرافیکی ساختار پرونده بر اساس اندازه

لیستی از تمام پوشه های موجود در ریشه سیستم عامل همراه با نمودار (میله ها) و نمایش عددی به عنوان درصدی از اندازه آنها در داخل آن بدست آورید.

t=$(df|awk 'NR!=1{sum+=$2}END{print sum}');sudo du / --max-depth=1|sed '$d'|sort -rn -k1 | awk -v t=$t 'OFMT="%d" {M=64; for (a=0;a<$1;a++){if (a>c){c=a}}br=a/c;b=M*br;for(x=0;x<b;x++){printf "\033[1;31m" "|" "\033[0m"}print " "$2" "(a/t*100)"% total"}'

به عنوان مثال:

مثال 6: دستور awk

خلاصه ای از انواع پرونده ها را در فهرست قرار دهید

لیستی از انواع پرونده های موجود در یک فهرست را به همراه تعداد پرونده های مربوط به آن نشان دهید.

find . -type f | awk -F'.' '{print $NF}' | sort| uniq -c | sort -g

به عنوان مثال:

مثال 8: دستور awk

این نمونه از خطوط فرمان با استفاده از دستور awk امیدوارم که برای شما بسیار مفید باشد. و استفاده از آنها مستقیماً از کنسول یا غیرمستقیم با قرار دادن آنها در یک اسکریپت (کار خودکار) انجام می شود.

در پست بعدی در Shell Scripting ، دستورات دیگر را بررسی خواهیم کرد.

اگر می خواهید کمی بیشتر در مورد دستور "grep" بیاموزید به این پیوند مراجعه کنید "ویکی دبیان"و اگر می خواهید در بلاگ خود ما درباره Shell Scripting بیشتر بدانید، می توانید با کلیک روی اینجا به سایر نشریات ما در این زمینه نگاهی بیندازید: اسکریپت نویسی در FromLinux


محتوای مقاله به اصول ما پیوست اخلاق تحریریه. برای گزارش یک خطا کلیک کنید اینجا.

نظر بدهید ، نظر خود را بگذارید

نظر خود را بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخشهای موردنیاز علامتگذاری شدهاند با *

*

*

  1. مسئول داده ها: میگل آنخل گاتون
  2. هدف از داده ها: کنترل هرزنامه ، مدیریت نظرات.
  3. مشروعیت: رضایت شما
  4. ارتباط داده ها: داده ها به اشخاص ثالث منتقل نمی شوند مگر با تعهد قانونی.
  5. ذخیره سازی داده ها: پایگاه داده به میزبانی شبکه های Occentus (EU)
  6. حقوق: در هر زمان می توانید اطلاعات خود را محدود ، بازیابی و حذف کنید.

  1.   توکسیتو dijo

    من فقط مثال اول را فهمیدم ، هیچ چیز دیگری