اطلاعیه

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

نحوه استفاده از عبارات ترکیبی به همراه دستور awk در لینوکس بخش 5

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

    نحوه استفاده از عبارات ترکیبی به همراه دستور awk در لینوکس بخش 5

    به هنگام چک کردن اینکه آیا یک شرط برقرار میشود یا خیر ما همواره به دنبال عبارات ساده بوده ایم و اما چگونه شما میتوانید از بیشتر از یک عبارت برای بررسی یک شرط خاص استفاده کنید ؟

    در این پست به بررسی چگونگی ترکیب چندین عبارت خواهیم پرداخت. در دستور AWK عبارت های ترکیبی را میتوان با استفاده از && (به معنای and) و همچنین || (به معنای or) ایجاد کرد.

    ساختار کلی عبارت های ترکیبی به شرح زیر میباشد.
    کد PHP:
    first_expression ) && ( second_expression 
    در عبارت بالا first_expression و second_expression باید درست باشند که کل عبارت درست شود.
    کد PHP:
    first_expression ) || ( second_expression
    در مثال بالا نیز یا first_expression و یا second_expression باید درست باشد که کل عبارت درست شود.

    نکته : به خاطر داشته باشید که همیشه پرانتز "()" را نیز قرار دهید.

    عبارات میتواند با استفاده از عملگرهای مقایسه ایجاد شود که در پارت 4 از سری پست های آموزش AWK به آن پرداخته ایم.

    اکنون با مثال زیر واضح تر به موضوع خواهیم پرداخت.

    در این مثال فایل متنی به نام tecmint_deals.txt داریم که شامل نام قرارداد، قیمت و نوع آن میباشد.
    کد PHP:
    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          Unknown
    6       Ditto_Bluetooth_Altering_Device         
    $33.00          Tech
    7       Nano_Prowler_Mini_Drone                 
    $36.99          Tech 

    در اینجا ما میخواهیم که تنها قراردادهایی که مبلغ شان بالاتر از 20 دلار و همچنین نوع آنها Tech باشد را با استفاده از علامت ** در پایان هر خط print و مشخص کنید.

    باید دستور زیر را اجرا کنید :
    کد PHP:
    [mohammad@localhost ~]$ awk '($3 ~ /^\$[2-9][0-9]*\.[0-9][0-9]$/) && ($4=="Tech") { printf "%s\t%s\n",$0,"*"; } ' tecmint_deals.txt

    6       Ditto_Bluetooth_Altering_Device         
    $33.00          Tech    *
    7       Nano_Prowler_Mini_Drone                 $36.99          Tech    *
    [
    mohammad@localhost ~]$ 
    در مثال بالا ما از 2 عبارت در یک عبارت ترکیبی استفاده کردیم.

    عبارت اول ($3 ~ /^\$[2-9][0-9]*\.[0-9][0-9]$/)
    به دنبال خط هایی که قیمت قرار دادها بالاتر از 20 دلار هست میگردد و تنها در حالتی درست هست که مقدار $3 که در حقیقت فیلد price (قیمت) میباشد با پترن /^\$[2-9][0-9]*\.[0-9][0-9]$/ مچ (match) شود.

    و عبارت دوم ($4 == “Tech”) بررسی میکند که آیا نوع قرارداد Tech هست یا خیر و عبارت تنها زمانی درست است که مقدار $4 (فیلد چهارم) برابر با Tech باشد.

    توجه داشته باشید اگر عبارت اول (first expression و عبارت دوم second expression) هر دو درست باشند همانطور که قبلا هم جزء قوانین عملگر && گفتیم، یک خط تنها با ** مشخص خواهد شد.


    خلاصه :
    بعضی از شرط ها همیشه نیاز دارند که با استفاده از عبارات شرطی ایجاد شوند تا شما بتوانید دقیقا به آنچه که میخواهید آنها را mach کنید. زمانی که شما مورد استفاده عملگرهای عبارات ترکیبی و مقایسه ای را دریابید در نتیجه فیلتر کردن متن یا رشته های متنی بر اساس شرط های مشکل بسیار آسان خواهد شد.

    امیدوارم این پست برای شما مفید واقع شود. در صورت هرگونه سوال و یا تمایل به تکمیل این پست میتوانید در همین جا مطرح کنید.
    آخرین ویرایش توسط Habili; در تاریخ/ساعت 07-14-2019, 02:38 PM.

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

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

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