اطلاعیه

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

نحوه خواندن ورودی دستور AWK از STDIN در Linux بخش 7

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

    نحوه خواندن ورودی دستور AWK از STDIN در Linux بخش 7

    در بخش های قبل از سری پست های ابزار AWK مابیشتر روی خواندن ورودی از یک فایل تمرکز کردیم. اما اگر شما بخواهید ورودی را از STDIN یا Standard Input چگونه خواهد بود.

    در این بخش از سری مطالب AWK ما به چندین مثال خواهیم پرداخت به طوری که شما بتوانید خروجی دستورات دیگر را به جای خواندن ورودی از یک فایل فیلتر و استفاده کنیم.

    ما با ابزار dir شروع میکنیم که همانند دستور ls کار میکند و همانطور که در مثال زیر میبینید ما خروجی دستور dir -l را به عنوان ورودی دستور awk استفاده میکنیم تا تنها username, groupname و فایل هایی که مربوط به انهاست و در دایرکتوری جاری میباشند را print بگیریم.
    کد PHP:
    # dir -l | awk '{print $3, $4, $9;}' 
    کد PHP:
    root@asax:~# dir -l | awk '{print $3, $4, $9;}'

    root root @
    root root dahdi-linux-complete-current.tar.gz
    root root Desktop
    root root dhcpd
    .conf
    root root Documents
    root root Downloads
    root root habili
    root root habili
    .txt
    root root Mail
    root root mitesterforsip
    root root Music
    root root Pictures
    root root postponed
    root root 
    Public
    root root Templates
    root root Videos
    root
    @asax:~
    مثال دیگری هم در زیر آورده ایم که از عبارت های AWK استفاده شده و در این مثال میخواهیم فایل هایی که مالک آنها کاربر root هستند را با استفاده از یک عبارت برای فیلتر کردن string ها نمایش دهیم.
    کد PHP:
    # dir -l | awk '$3=="root" {print $1,$3,$4, $9;} ' 
    کد PHP:
    root@asax:~# dir -l | awk '$3=="root" {print $1,$3,$4, $9;} '
    -rw-r--r-- root root @
    -
    rw-r--r-- root root dahdi-linux-complete-current.tar.gz
    drwxr
    -xr-x root root Desktop
    -rw-r--r-- root root dhcpd.conf
    drwxr
    -xr-x root root Documents
    drwxr
    -xr-x root root Downloads
    drwxr
    -xr-x root root habili
    -rw-r--r-- root root habili.txt
    drwx
    ------ root root Mail
    drwxr
    -xr-x root root mitesterforsip
    drwxr
    -xr-x root root Music
    drwxr
    -xr-x root root Pictures
    -rw------- root root postponed
    drwxr
    -xr-x root root Public
    drwxr-xr-x root root Templates
    drwxr
    -xr-x root root Videos
    root
    @asax:~
    دستور بالا شامل عملگر مقایسه ای (==) میباشد که به ما کمک میکند که فایل های درون دایرکتوری جاری که مالکیت آنها با یوزر root میباشد را فیلتر کنیم. که با استفاده از عبارت $3==”root” صورت میگیرد.

    اکنون به مثال دیگری میپردازیم که در آن از یک عملگر مقایسه ای AWK به منظور mach شدن با یک string خاص استفاده میشود.

    در اینجا ما از ابزار cat برای نمایش محتوای یک فایل با نام linuxzone _deals.txt استفاده میکنیم و میخواهیم فقط محتوایی که Type آن Tech باشد را نمایش دهیم در نتیجه دستور زیر را اجرا میکنیم.
    کد PHP:
    # cat tecmint_deals.txt
    # cat tecmint_deals.txt | awk '$4 ~ /tech/{print}'
    # cat tecmint_deals.txt | awk '$4 ~ /Tech/{print}' 
    کد PHP:
    root@habili:~# cat linuzone_deals.txt
    No      Name                            Price           Type
    1       Mac_OS_X_Cleanup_Suite          
    $9.99           Software
    2       Basics_Notebook                 
    $14.99          Lifestyle
    3       Tactical_Pen                    
    $25.99          Lifestyle
    4       Scapple                         
    $19.00          Unknown
    5       Nano_Tool_Pack                  
    $11.99          Unkown
    6       Ditto_Bluetooth_Alerting_Device 
    $33.00          Tech
    7       Nano_Prowler_Mini_Drone         
    $36.99          Tech
    root
    @habili:~#
    root@habili:~#
    root@habili:~# cat linuzone_deals.txt | awk '$4 ~ /tech/{print}'
    root@habili:~#
    root@habili:~# cat linuzone_deals.txt | awk '$4 ~ /Tech/{print}'
    6       Ditto_Bluetooth_Alerting_Device $33.00          Tech
    7       Nano_Prowler_Mini_Drone         
    $36.99          Tech
    root
    @habili:~
    در مثال بالا ما از عملگر مقایسه ای با مقدار ~ /pattern/ استفاده کرده ایم اما در مثال بالا 2 کامند میبینید که نکته مهمی را خاطر نشان میکند.

    زمانی که شما دستور را با الگوی tech اجرا میکنید هیچ چیزی نمایش داده نمیشود زیرا هیچ موردی با این type وجود ندارد ولی زمانی که از Tech استفاده میکنید خروجی دریافت میکنید.

    در نتیجه همیشه به خاطر داشته باشید که این عملگر مقایسه ای به بزرگ و کوچک بودن حساس میباشد.(Case Sensitive)

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

    امیدوارم مثال های بالا به اندازه کافی واضح باشند و شما آنها را به درستی درک کرده باشید. اگر هر گونه موردی بود شما میتوانید در همین پست آن را بیان کنید و فراموش نکنید که پارت بعدی از سری پست های مربوط به ابزار AWK را مشاهده کنید که درباره قابلیت های awk به عنوان variables, numeric expressions و assignment operators را مطالعه فرمایید.
    آخرین ویرایش توسط Habili; در تاریخ/ساعت 07-14-2019, 02:41 PM.

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

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

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