به هنگام چک کردن اینکه آیا یک شرط برقرار میشود یا خیر ما همواره به دنبال عبارات ساده بوده ایم و اما چگونه شما میتوانید از بیشتر از یک عبارت برای بررسی یک شرط خاص استفاده کنید ؟
در این پست به بررسی چگونگی ترکیب چندین عبارت خواهیم پرداخت. در دستور AWK عبارت های ترکیبی را میتوان با استفاده از && (به معنای and) و همچنین || (به معنای or) ایجاد کرد.
ساختار کلی عبارت های ترکیبی به شرح زیر میباشد.
در عبارت بالا first_expression و second_expression باید درست باشند که کل عبارت درست شود.
در مثال بالا نیز یا first_expression و یا second_expression باید درست باشد که کل عبارت درست شود.
نکته : به خاطر داشته باشید که همیشه پرانتز "()" را نیز قرار دهید.
عبارات میتواند با استفاده از عملگرهای مقایسه ایجاد شود که در پارت 4 از سری پست های آموزش AWK به آن پرداخته ایم.
اکنون با مثال زیر واضح تر به موضوع خواهیم پرداخت.
در این مثال فایل متنی به نام tecmint_deals.txt داریم که شامل نام قرارداد، قیمت و نوع آن میباشد.
در اینجا ما میخواهیم که تنها قراردادهایی که مبلغ شان بالاتر از 20 دلار و همچنین نوع آنها Tech باشد را با استفاده از علامت ** در پایان هر خط print و مشخص کنید.
باید دستور زیر را اجرا کنید :
در مثال بالا ما از 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 کنید. زمانی که شما مورد استفاده عملگرهای عبارات ترکیبی و مقایسه ای را دریابید در نتیجه فیلتر کردن متن یا رشته های متنی بر اساس شرط های مشکل بسیار آسان خواهد شد.
امیدوارم این پست برای شما مفید واقع شود. در صورت هرگونه سوال و یا تمایل به تکمیل این پست میتوانید در همین جا مطرح کنید.
در این پست به بررسی چگونگی ترکیب چندین عبارت خواهیم پرداخت. در دستور AWK عبارت های ترکیبی را میتوان با استفاده از && (به معنای and) و همچنین || (به معنای or) ایجاد کرد.
ساختار کلی عبارت های ترکیبی به شرح زیر میباشد.
کد PHP:
( first_expression ) && ( second_expression )
کد PHP:
( 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 ~]$
عبارت اول ($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 کنید. زمانی که شما مورد استفاده عملگرهای عبارات ترکیبی و مقایسه ای را دریابید در نتیجه فیلتر کردن متن یا رشته های متنی بر اساس شرط های مشکل بسیار آسان خواهد شد.
امیدوارم این پست برای شما مفید واقع شود. در صورت هرگونه سوال و یا تمایل به تکمیل این پست میتوانید در همین جا مطرح کنید.