از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
روش استفاده از متغیر در دستور awk
سرفصلهای مطلب
متغیرها برای ذخیره هر مقدار موقت در هر زبان برنامه نویسی استفاده می شوند. تعریف متغیر در دستور awk مشابه است bash زبان برنامه نویسی و مانند آن کار می کند bash زمانی که متغیر پوسته با یک نقل قول تکی و مضاعف استفاده می شود. دستور Awk دارای متغیرهای داخلی زیادی برای اهداف مختلف است. روش استفاده از متغیرهای تعریف شده، داخلی و پوسته توسط کاربر در دستور awk در این آموزش با استفاده از مثالهای مختلف نشان داده شده است.
Example -1: تعریف و چاپ متغیر
دستور ‘awk’ از گزینه ‘-v’ برای تعریف متغیر استفاده می کند. در این مثال، myvar متغیر در دستور awk برای ذخیره مقدار تعریف شده است. “متغیر AWK” که بعدا چاپ میشه دستور زیر را از terminal برای بررسی خروجی
خروجی:
مثال – 2: استفاده از متغیر پوسته در awk با یک نقل قول تکی و دو کوتیشن
مثال نشان می دهد که چگونه می توان از متغیر پوسته از دستور awk استفاده کرد. در اینجا، یک متغیر پوسته، myvar با مقدار اعلام می شود، ” راهنمایی لینوکس ” در دستور اول نماد ‘$’ با نام متغیر پوسته برای خواندن مقدار استفاده می شود. فرمان دوم متغیر را می خواند، $myval با یک quote(‘) و فرمان سوم متغیر $myvar را با double quote(“) در عبارت `awk` می خواند.
$ echo | بیخیال -v awkvar=‘$myvar’ ‘{ print awkvar; }’
$ echo | بیخیال -v awkvar=“$myvar“ ‘{ print awkvar; }’
خروجی:
در خروجی نشان داده شده است که وقتی مقدار $myvar با یک نقل قول (‘) محصور شده باشد، قابل خواندن نیست و خروجی $myvar. ارزش $myvar زمانی چاپ می شود که با یک نقل قول دوگانه (“) محصور شود.
مثال – 3: خواندن متغیر ARGC در awk
متغیر ARGC برای شمارش تعداد کل آرگومان های خط فرمان استفاده می شود. سه متغیر آرگومان خط فرمان (t1، t2، t3) در اسکریپت awk زیر ارسال میشوند. در اینجا، تعداد کل آرگومانهای اسکریپت 4 است. اسکریپت را از قسمت اجرا کنید terminal.
خروجی:
پس از اجرای اسکریپت خروجی زیر ظاهر می شود.
مثال – 4: خواندن محتوای فایل توسط متغیرهای آرگومان
یک فایل متنی با نام ایجاد کنید customer.txt با مطالب زیر برای تمرین این مثال. در اینجا، هر فیلد فایل با تک جدا می شود برگه فضا.
customer.txt
103847 جان مایکل
209485 واتسون
974732 میرا حسین
دستور Awk می تواند هر فیلد را از هر فایل متنی با متغیرهای آرگومان بخواند. دو فیلد در آن وجود دارد customer.txt فایل. اینها شناسه و نام هستند. اسکریپت زیر خواهد بود print این دو فیلد توسط متغیرهای آرگومان، 1 دلار و 2 دلار با جدا کردن دو برگه فضاها اسکریپت را از قسمت اجرا کنید terminal.
$ گربه customer.txt | بیخیال ‘{ print $1 “\t\t” $2;}’
خروجی:
پس از اجرای دستورات بالا خروجی زیر ظاهر می شود.
مثال 5: استفاده از متغیر داخلی، FS و گزینه جداکننده فیلد با دستور awk
متغیر FS در دستور awk به عنوان جداکننده فیلد استفاده می شود. Space به عنوان مقدار پیش فرض FS استفاده می شود. دستور زیر فایل را می خواند customer.txt استفاده از فضا به عنوان جداکننده میدان و print محتوای فایل دستور را از قسمت اجرا کنید terminal.
خروجی:
پس از اجرای اسکریپت خروجی زیر ظاهر می شود.
دستور Awk می تواند با استفاده از گزینه ‘-F’ از کاراکترهای دیگر به عنوان جداکننده فیلد استفاده کند. یک فایل متنی با نام ایجاد کنید product.txt با محتوای زیر که در آن “:” به عنوان جداکننده فیلد استفاده می شود.
product.txt
102:مداد:5 دلار
103:صابون:3 دلار
104:شامپو:1 دلار0
سه فیلد در فایل وجود دارد، product.txt که حاوی شناسه محصول، نام و قیمت است. دستور awk زیر خواهد بود print فقط قسمت دوم هر خط. دستورات را از terminal.
$ بیخیال -اف ‘:’ ‘{ print $2 }’ product.txt
خروجی:
در اینجا، دستور اول محتوای آن را چاپ کرد product.txt و فرمان دوم فقط قسمت دوم فایل را چاپ می کند.
مثال – 6: استفاده از متغیر داخلی، NR با دستور awk
متغیر NR در دستور awk برای شمارش تعداد کل رکوردها یا خطوط یک فایل استفاده می شود. یک فایل متنی با نام ایجاد کنید student.txt برای تست عملکرد این متغیر
student.txt
جان 20 3
میرا 22 1
الا 18
چارل 15 8
اسکریپت awk زیر خواهد بود print سه خط اول از product.txt فایل. در اینجا یک شرط با استفاده از متغیر NR اضافه می شود. فرمان خواهد شد print آن خطوطی که مقدار NR کمتر از 4 است. اسکریپت را از قسمت اجرا کنید terminal.
خروجی:
پس از اجرای اسکریپت خروجی زیر ظاهر می شود.
مثال – 7: استفاده از متغیر داخلی، NF با دستور awk
متغیر NF در دستور awk برای شمارش تعداد کل فیلدها در هر خط از یک فایل استفاده می شود. اسکریپت awk زیر برای فایل اعمال می شود، student.txt که در مثال قبلی ایجاد شده است. فیلمنامه خواهد شد print آن خطوط از student.txt فایلی که مجموع فیلدها کمتر از 3 باشد. دستور را از terminal.
خروجی:
فقط یک خط در فایل وجود دارد که تعداد کل فیلدها کمتر از 3 است که به عنوان خروجی چاپ می شود.
مثال – 8: استفاده از متغیر داخلی، OFS با دستور awk
متغیر OFS در دستور awk برای اضافه کردن جداکننده میدان خروجی در خروجی استفاده می شود. product.txt فایل در این مثال برای نشان دادن استفاده از متغیر OFS استفاده شده است. ‘:’ به عنوان جداکننده فیلد در فایل product.txt استفاده می شود. اسکریپت awk زیر از «->» به عنوان مقدار OFS استفاده می کند و فیلدهای دوم و سوم فایل print با افزودن این جداکننده دستورات را از terminal.
$ بیخیال -اف ‘:’ ‘BEGIN{OFS=”->”;} {print $2, $3;}’ product.txt
خروجی:
خروجی زیر خواهد بود print پس از اجرای دستورات
نتیجه:
در این آموزش سعی شده بیشتر موارد استفاده از متغیرهای awk توضیح داده شود. امیدوارم خواننده بتواند پس از تمرین این آموزش از متغیرهای awk به درستی در اسکریپت استفاده کند.
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم
زمان انتشار: 1402-12-31 20:12:04