اطلاعیه

بستن
هنوز اطلاعیه ای در دست نیست.

چگونه به awk اجازه بدهیم از متغیرهای شل استفاده کند بخش 11

بستن
X
 
  • فیلتر کردن
  • زمان
  • نمایش
Clear All
پست های جدید

    چگونه به awk اجازه بدهیم از متغیرهای شل استفاده کند بخش 11

    وقتی ما اسکریپت های Shell را می نویسیم معمولاً از برنامه ها و دستورهای کوچکتر دیگر مثل AWK در اسکریپت مان استفاده می کنیم. در مورد awk ما باید روش های پاس دادن مقادیر را از شل به درون عملیات awk پیدا کنیم.

    برای این منظور می نوانیم از متغیرهای shell در دستورات AWK استفاده کنیم. در این مقاله، ما یاد خواهیم گرفت چگونه به AWK اجازه بدهیم از متغیرهای shell استفاده کند که ممکن است شامل مقادیری باشند که ما می خواهیم در دستور awk قرار دهیم.

    2 راه ممکن وجود دارد که میتوانید AWK را برای استفاده از متغیرهای شل توانمند سازید :


    1 - استفاده از Quotation در Shell

    بگذارید یک مثال برای نشان دادن چگونگی استفاده از quotation در شل برای جایگزینی مقدار متغیر شل در فرمان awk نگاهی بیاندازیم. در این مثال میخواهیم یک username را درون فایل /etc/passwd جستجو کنیم و اطلاعات حساب کاربر را فیلتر و چاپ کنیم.

    پس میتوانیم اسکریپت test.sh را با محتوای زیر بنویسیم :
    کد PHP:
    #!/bin/bash
    #read user input
    read -"Please enter username:" username
    #search for username in /etc/passwd file and print details on the screen
    cat /etc/passwd awk "/$username/ "' { print $0 }' 
    سپس فایل را ذخیره کنید و خارج شوید.


    تفسیر دستور AWK در اسکریپت test.sh :
    کد PHP:
    cat /etc/passwd awk "/$username/ "' { print $0 }' 
    "/$username/ " - از quotation در شل برای جانشینی مقدار متغیر شل username در کامند awk استفاده میشود. مقدار username یک الگویی است که در فایل /etc/passwd جستجو می شود.

    توجه کنید که Double Quote خارج از اسکریپت awk است.
    ‘{ print $0 }’

    سپس به script پرمیژن اجرایی بدهید و مانند زیر آنرا اجرا کنید :
    کد PHP:
    chmod  +x  test.sh
    $ ./text.sh 
    پس از اجرای اسکریپت، از شما خواسته می شود که یک نام کاربری وارد کنید، کافیست یک نام کاربری معتبر وارد کنید و Enter را فشار دهید. سپس شما جزئیات حساب کاربر را از فایل /etc/passwd همانند زیر مشاهده می کنید :

    برای بزرگتر شدن عکس روی آن کلیک کنید  نام:	awk command 1 linux-zone.org.png نمایش ها:	1 اندازه:	3.5 KB شناسه:	21913



    2 - اختصاص دادن متغیر در AWK

    این روش در مقایسه با روش بالا بسیار ساده تر و بهتر است. مثال بالا را در نظر بگیرید، میتوانیم یک فرمان ساده برای انجام کار را اجرا کنیم. در این روش، ما از آپشن -v برای تخصیص مقدار یک متغیر shell به یک متغیر awk استفاده می کنیم.

    نخست، یک متغییر username بسازید و سپس یک اسم را به آن اختصاص دهید که می خواهیم در فایل /etc/passwd جستجو شود :
    کد PHP:
    username="mohammad" 
    سپس فرمان زیر را تایپ کنید و Enter بزنید :
    کد PHP:
    # cat /etc/passwd | awk -v name="$username" ' $0 ~ name {print $0}' 
    برای بزرگتر شدن عکس روی آن کلیک کنید  نام:	awk command 2 linux-zone.org.png نمایش ها:	1 اندازه:	3.9 KB شناسه:	21914


    توضیح دستور بالا :

    -v : آپشنی در awk برای مشخص کردن یک متغییر
    username : یک متغیر شل است
    name : یک متغیر awk است

    اجازه دهید نگاهی دقیق به $0 ~ name درون اسکریپت awk بیاندازیم.

    ' $0 ~ name {print $0}' . اگر در خاطرتان باشد در بخش چهارم از سری مقالات AWK درباره عملگرهای مقایسه ای یکی از عملگرهای مقایسه ای عملگر ~ بود که به معنای true میباشد البته در صورتی که مقدار با الگو یکسان باشد.

    output($0) از دستور cat که به awk پایپ ”|” می شود با الگوی (mohammad) مچ (match) میشود، نامی است که ما آن را در /etc/passwd جستجو می کنیم مطابقت داده می شود و در نتیجه عملیات مقایسه ای درست (True) میباشد. خطی که شامل اطلاعات حساب کاربر است بروی صفحه چاپ می شود.

    همچنین توصیه میشود مطالعه کنید :

    آموزش کامل دستور AWK در لینوکس


    نتیجه

    ما ویژگی هایی مهم از AWK را پوشش داده ایم، که به ما اجازه می دهند متغیرهای شل را در فرمان awk استفاده کنیم. بارها شما برنامه های کوچک awk یا فرمان هایی در اسکریپت های شل خواهید نوشت و بنابراین شما نیاز به درک شفافی از چگونگی استفاده متغیرهای شل درون فرمان awk دارید.

    در بخش بعدی از سری آموزش های AWK ما بخش حیاتی ای از ویژگی های awk را کشف خواهیم کرد که بسیار مهم هستند. پس همراه ما باشید و اجازه دهید یاد بگیریم و به اشتراک بگذرایم.
    آخرین ویرایش توسط Habili; در تاریخ/ساعت 07-14-2019, 02:48 PM.
    Instagram : https://www.instagram.com/iranlinuxforum

    Voip Trainer - Asterisk - Elastix - Agi Programming- NewRock

    Voip Expert :ASTERISK-ELASTIX-NewRock Certified-With Experience of Working With
    Sangoma-Digium-Openvox-Synway-Atcom-Quintum Tenor-Polycom-Yealink-Rtx-Snom
    Cisco Collaboration - CME-CUCM-CUPs-CUC-WEBEX
    LPI ( Fundamental - LPI1 and LPI2 ) - Monitoring: ZABBIX-VOIPMONITOR-NAGIOS - CCNA

    Linkedin Profile : https://www.linkedin.com/in/masuma-vahid-26b17b66/

درباره انجمن منطقه لینوکسی ها

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

شبکه های اجتماعی
در حال انجام ...
X