{ . . . }
پورتال مدیریت بار کالاپیک نمره الف:دانلود پروژه و پایان نامه دانشجویی کاردانی-کارشناسی

Awk ابزاری فوق العاده برای اسکریپت نویسی شل در یونیکس و لینوکس می باشد. AWK یک زبان برنامه نویسی است که برای دیتاهای متنی ، فایلها ، دیتا استریم ها و یا استفاده در piping ها  طراحی شده است  . به عبارت دیگر شما میتوانید awk را با شل اسکریپت ها ترکیب کرده و یا مستقیم در خط فرمان از آن استفاده نمایید.

در این مقاله نحوه استفاده از awk در شل اسکریپت bash را نشان می دهیم.

  • چگونگی استفاده از awk در اسکریپت نویسی bash

چگونگی استفاده از awk در اسکریپت نویسی bash

Awk ابزاری فوق العاده برای اسکریپت نویسی شل در یونیکس و لینوکس می باشد. AWK یک زبان برنامه نویسی است که برای دیتاهای متنی ، فایلها ، دیتا استریم ها و یا استفاده در piping ها  طراحی شده است  . به عبارت دیگر شما میتوانید awk را با شل اسکریپت ها ترکیب کرده و یا مستقیم در خط فرمان از آن استفاده نمایید.

در این مقاله نحوه استفاده از awk در شل اسکریپت bash را نشان می دهیم.

Awk ابزاری فوق العاده برای اسکریپت نویسی شل در یونیکس و لینوکس می باشد. AWK یک زبان برنامه نویسی است که برای دیتاهای متنی ، فایلها ، دیتا استریم ها و یا استفاده در piping ها  طراحی شده است  . به عبارت دیگر شما میتوانید awk را با شل اسکریپت ها ترکیب کرده و یا مستقیم در خط فرمان از آن استفاده نمایید.

در این مقاله نحوه استفاده از awk در شل اسکریپت bash را نشان می دهیم.

چاپ یک فایل متنی

awk '{ print }' /etc/passwd

یا

awk '{ print $0 }' /etc/passwd

چاپ فیلد خاص

از :   به عنوان جدا کننده استفاده کنید و فیلد اولی را فقط چاپ کنید یعنی نام کاربری ها

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

ارسال خروجی به دستور sort با استفاده از pipe

awk -F':' '{ print $1 }' /etc/passwd | sort

Pattern Matching

شما میتوانید فقط خطوطی را چاپ کنید که با الگو مطابقت دارد. به عنوان مثال نمایش تمام خطوط فایل لاگ آپاچی که کد خطای HTTP 500 دارد به شکل زیر میتوان به دست آورد

awk '$9 == 500 { print $0}' /var/log/httpd/access.log

بخش خارجی باکت ها با نام pattern و بخش داخلی با نام action شناخته می شود.عملگرهای مقایسه ای مشابه عملکرهای زبان C هستند:

== != < > <= >= ?:

چنانچه هیچ الگویی وجود نداشته باشد action به همه خطوط اعمال می شود . چنانچه هیچ action داده نشود بنابراین تمام خط چاپ میشود. چنانچه “print” به تنهایی مورد اشتفاده قرار گیرد تمام خط چاپ می شود . بنابراین هر سه عبارت زیر مشابه هم هستند:

awk '$9 == 500 ' /var/log/httpd/access.log
awk '$9 == 500 {print} ' /var/log/httpd/access.log
awk '$9 == 500 {print $0} ' /var/log/httpd/access.log

چاپ خطوطی که شامل tom ، jerry و vivek هستند

چاپ الگو احتمالا در خطوط جداگانه :

awk '/tom|jerry|vivek/' /etc/passwd

چاپ اولین خط از فایل

awk "NR==1{print;exit}" /etc/resolv.conf
awk "NR==$line{print;exit}" /etc/resolv.conf

محاسبه ساده

شما میتوانید مجموع تمامی اعداد یک ستون را به دست آورید

awk '{total += $1} END {print total}' earnings.txt

شل نمیتواند اعداد اعشار را محاسبه کند ولی awk می تواند:

awk 'BEGIN {printf "%.3f\n", 2005.50 / 3}'

فراخوانی AWK از شل اسکریپت

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

#!/bin/bash
d=$1
OUT=/tmp/spam.ip.$$
HTTPDLOG="/www/$d/var/log/httpd/access.log"
[ $# -eq 0 ] && { echo "Usage: $0 domain-name"; exit 999; }
if [ -f $HTTPDLOG ];
then
        awk '{print}' $HTTPDLOG >$OUT
        awk '{ print $1}' $OUT  |  sort -n | uniq -c | sort -n
else
        echo "$HTTPDLOG not found. Make sure domain exists and setup correctly."
fi
/bin/rm -f $OUT

AWK و توابع شل

chrootCpSupportFiles() کتابخانه های اشتراکی مورد نیاز هر برنامه (مانند perl / php-cgi (   و یا کتابخانه اشتراکی مشخص شده در خط فرمان را جستجو میکند و آنها را در مقصد کپی میکنتد. این کد awk را برای چاپ فیلدهای انتخاب شده از خروجی ldd فراخوانی می کند:

chrootCpSupportFiles() {
# Set CHROOT directory name
local BASE="$1"         # JAIL ROOT
local pFILE="$2"        # copy bin file libs
 
[ ! -d $BASE ] && mkdir -p $BASE || :
 FILES="$(ldd $pFILE | awk '{ print $3 }' |egrep -v ^'\(')"
for i in $FILES
do
  dcc="$(dirname $i)"
  [ ! -d $BASE$dcc ] && mkdir -p $BASE$dcc || :
  /bin/cp $i $BASE$dcc
done
 sldl="$(ldd $pFILE | grep 'ld-linux' | awk '{ print $1}')"
sldlsubdir="$(dirname $sldl)"
if [ ! -f $BASE$sldl ];
then
        /bin/cp $sldl $BASE$sldlsubdir
else
        :
fi
}

این تابع به شکل زیر فراخوانی میشود :

chrootCpSupportFiles /lighttpd-jail /usr/local/bin/php-cgi

AWK و Shell pipe

لیست 10 دستور پر استفاده شما

history | awk '{print $2}' | sort | uniq -c | sort -rn | head

خروجی ساده :

   172 ls
    144 cd
     69 vi
     62 grep
     41 dsu
     36 yum
     29 tail
     28 netstat
     21 mysql
     20 cat

مثال دیگری برای جستجوی تاریخ انقضای دامنه :

$ whois 3dots.ir | awk '/Registry Expiry Date:/ { print $4 }'

خروجی ساده :

2018-07-31T18:42:58Z

Awk Program File

شما می توانید تمامی دستورات awk را در یک فایل بگذارید و آن را به شیوه زیر فراخوانی نمایید

awk -f mypgoram.awk input.txt

awk در شل اسکریپت ارسال متغیرات شل به AWK

شما میتوانید متغیرهای شل را با استفاده از آپشن –v ارسال نمایید .

n1=5
n2=10
echo | awk -v x=$n1 -v y=$n2 -f program.awk

مقدارnl را به متغیر x نسبت دهیدقبل از اینکه برنامه آغاز شود . برخی مقادیر متغیرها در بلاک BEGIN یک برنامه AWK  در دسترس هستند

BEGIN{ans=x+y}
{print ans}
END{}

ترجمه : حسین داود

منبع :

https://www.cyberciti.biz/faq/bash-scripting-using-awk

درباره مدیر سایت

3dots.ir
ادمین سایت

امام علی علیه السلام: با مردم آنگونه معاشرت كنيد، كه اگر مرديد بر شما اشك ريزند، و اگر زنده مانديد، با اشتياق سوي شما آيند.

مطالب مشابه

چگونگی استفاده از awk در اسکریپت نویسی bash

Awk ابزاری فوق العاده برای اسکریپت نویسی شل در یونیکس و لینوکس می باشد. AWK یک زبان برنامه نویسی است که برای دیتاهای متنی ، فایلها ، دیتا استریم ها و یا استفاده در piping ها  طراحی شده است  . به عبارت دیگر شما میتوانید awk را با شل اسکریپت ها ترکیب کرده و یا مستقیم در خط فرمان از آن استفاده نمایید.

در این مقاله نحوه استفاده از awk در شل اسکریپت bash را نشان می دهیم.

ادامه مطلب
چگونه با ما در تماس باشید ؟


تلفن ۰۵۱ ۳۸۹۴۱۲۹۵ -۰۵۱ ۳۸۹۴۱۲۹۶

تلگرام @3dots

فکس ۰۲۱ ۴۳۸۵۹۳۳۶۷

ایمیل آدرس-ایمیل-فناوری-اطلاعات-یکتا-توس-برسام

آدرس ایران ، خراسان رضوی ، مشهد
بلوار فرهنگ - بین فرهنگ 43 و 45 - پلاک 51

فناوری اطلاعات تریداتس

پیاده سازی سامانه های تحت موبایل ، پورتال های سازمانی و ایمن سازی سرور های لینوکس

شرکت فناوری اطلاعات یکتا توس برسام که با نام تجاری تریداتس شناخته می شود توسط گروهی از متخصصین و کارشناسان حوزه امنیت ، توسعه و پیاده سازی اپلیکشن در سال 1395 تاسیس گردید. توان بالای اجرای پروژه های در اختیار و همین طور در اختیار داشتن توان فنی بومی شده در حوزه ایمن سازی سرور های لینوکس و برنامه نویسی در حوزه های کاری شرکت توانسته رضایت مندی حداکثری مشتریان ما را در پی داشته باشد.

توانایی توسعه کسب کار در بستر هایی همچون نرم افزار های تحت وب ، سرور های سازمانی و مجموعه های بزرگ گواهی بر دانش فنی و تجربه بالای همکاران ما در این مجموعه می باشد.این مجموعه با هدف گسترش ، تامین امنیت و توسعه کسب و کار مشتریان خود همواره سعی نموده تعهدات خود را با بهترین کیفیت به مشتریان ارائه نماید.

تریداتس

فناوری اطلاعات تریداتس

طراحی وب سایت

طراحی سایت

اپلیکیشن موبایل

امنیت سرور

لینوکس

آموزش لینوکس

اندروید

پورتال سازمانی

ایمن سازی سرور

امنیت سرور یکی از تخصصی ترین مباحث موجود در حوزه فناوری اطلاعات است. پایه و اساس سایت ها و اطلاعات موجود در بستر وب با امنیت سرور معنی پیدا می کنند.

انتخاب سیستم عامل در امنیت سرور مجازی شما نقس مهمی دارد

سیستم های لینوکس به خوبی توانايي اجرايي بودن سالها بدون هيج توقف و شكست را دارند

لینوکس نیز ذاتا امن تر از ویندوز است

یکی از کاربرد های مشخص سازی انواع و دسته بندی های اپلیکیشن موبایل، رسیدن به فهم مشترک برای دست یابی به اپلیکیشن مورد نظر از جانب توسعه دهندگان و کاربران می باشد.

شرکت ها و سازمان ها برای ورود به فضای موبایل و حضور موفق در این فضای جدید و تاثیرگذار، باید مسائل مختلفی را مدنظر قرار دهند. در این مواقع، موضوع مهمی که مطرح میشود این است که آیا طراحی اپلیکیشن موبایل بهتر است یا یک وب سایت موبایلی، یا هر دوی آنها.

طراحی سایت * برنامه نویسی موبایل * آموزش لینوکس
logo-samandehi
عضو سازمان نظام صنفی کشور