وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

روش استفاده از متغیر در دستور awk

0 5
زمان لازم برای مطالعه: 4 دقیقه


متغیرها برای ذخیره هر مقدار موقت در هر زبان برنامه نویسی استفاده می شوند. تعریف متغیر در دستور awk مشابه است bash زبان برنامه نویسی و مانند آن کار می کند bash زمانی که متغیر پوسته با یک نقل قول تکی و مضاعف استفاده می شود. دستور Awk دارای متغیرهای داخلی زیادی برای اهداف مختلف است. روش استفاده از متغیرهای تعریف شده، داخلی و پوسته توسط کاربر در دستور awk در این آموزش با استفاده از مثال‌های مختلف نشان داده شده است.

Example -1: تعریف و چاپ متغیر

دستور ‘awk’ از گزینه ‘-v’ برای تعریف متغیر استفاده می کند. در این مثال، myvar متغیر در دستور awk برای ذخیره مقدار تعریف شده است. “متغیر AWK” که بعدا چاپ میشه دستور زیر را از terminal برای بررسی خروجی

$ echo | بیخیال -v myvar=“متغیر AWK” ‘{print myvar}’

خروجی:

روش استفاده از متغیر در دستور awk

مثال – 2: استفاده از متغیر پوسته در awk با یک نقل قول تکی و دو کوتیشن

مثال نشان می دهد که چگونه می توان از متغیر پوسته از دستور awk استفاده کرد. در اینجا، یک متغیر پوسته، myvar با مقدار اعلام می شود، ” راهنمایی لینوکس ” در دستور اول نماد ‘$’ با نام متغیر پوسته برای خواندن مقدار استفاده می شود. فرمان دوم متغیر را می خواند، $myval با یک quote(‘) و فرمان سوم متغیر $myvar را با double quote(“) در عبارت `awk` می خواند.

$ myvar=” راهنمایی لینوکس “

$ echo | بیخیال -v awkvar=‘$myvar’ ‘{ print awkvar; }’

$ echo | بیخیال -v awkvar=$myvar ‘{ print awkvar; }’

خروجی:

در خروجی نشان داده شده است که وقتی مقدار $myvar با یک نقل قول (‘) محصور شده باشد، قابل خواندن نیست و خروجی $myvar. ارزش $myvar زمانی چاپ می شود که با یک نقل قول دوگانه (“) محصور شود.

پیشنهاد می‌کنیم بخوانید:  نمونه هایی از گروه های دستگیری

روش استفاده از متغیر در دستور awkروش استفاده از متغیر در دستور awk

مثال – 3: خواندن متغیر ARGC در awk

متغیر ARGC برای شمارش تعداد کل آرگومان های خط فرمان استفاده می شود. سه متغیر آرگومان خط فرمان (t1، t2، t3) در اسکریپت awk زیر ارسال می‌شوند. در اینجا، تعداد کل آرگومان‌های اسکریپت 4 است. اسکریپت را از قسمت اجرا کنید terminal.

$ بیخیال ‘شروع{print “Total arguments=”,ARGC}” t1 t2 t3

خروجی:

پس از اجرای اسکریپت خروجی زیر ظاهر می شود.

روش استفاده از متغیر در دستور awkروش استفاده از متغیر در دستور awk

مثال – 4: خواندن محتوای فایل توسط متغیرهای آرگومان

یک فایل متنی با نام ایجاد کنید customer.txt با مطالب زیر برای تمرین این مثال. در اینجا، هر فیلد فایل با تک جدا می شود برگه فضا.

customer.txt

نام شناسنامه
103847 جان مایکل
209485 واتسون
974732 میرا حسین

دستور Awk می تواند هر فیلد را از هر فایل متنی با متغیرهای آرگومان بخواند. دو فیلد در آن وجود دارد customer.txt فایل. اینها شناسه و نام هستند. اسکریپت زیر خواهد بود print این دو فیلد توسط متغیرهای آرگومان، 1 دلار و 2 دلار با جدا کردن دو برگه فضاها اسکریپت را از قسمت اجرا کنید terminal.

$ گربه customer.txt
$ گربه customer.txt | بیخیال ‘{ print $1 “\t\t” $2;}’

خروجی:

پس از اجرای دستورات بالا خروجی زیر ظاهر می شود.

روش استفاده از متغیر در دستور awkروش استفاده از متغیر در دستور awk

مثال 5: استفاده از متغیر داخلی، FS و گزینه جداکننده فیلد با دستور awk

متغیر FS در دستور awk به عنوان جداکننده فیلد استفاده می شود. Space به عنوان مقدار پیش فرض FS استفاده می شود. دستور زیر فایل را می خواند customer.txt استفاده از فضا به عنوان جداکننده میدان و print محتوای فایل دستور را از قسمت اجرا کنید terminal.

$ بیخیال FS customer.txt

خروجی:

پس از اجرای اسکریپت خروجی زیر ظاهر می شود.

روش استفاده از متغیر در دستور awkروش استفاده از متغیر در دستور awk

دستور Awk می تواند با استفاده از گزینه ‘-F’ از کاراکترهای دیگر به عنوان جداکننده فیلد استفاده کند. یک فایل متنی با نام ایجاد کنید product.txt با محتوای زیر که در آن “:” به عنوان جداکننده فیلد استفاده می شود.

product.txt

101:کیک:3 دلار0
102:مداد:5 دلار
103:صابون:3 دلار
104:شامپو:1 دلار0

سه فیلد در فایل وجود دارد، product.txt که حاوی شناسه محصول، نام و قیمت است. دستور awk زیر خواهد بود print فقط قسمت دوم هر خط. دستورات را از terminal.

$ گربه product.txt
$ بیخیال -اف ‘:’ ‘{ print $2 }’ product.txt

خروجی:

پیشنهاد می‌کنیم بخوانید:  چگونه خطوط را با استفاده از دستور SED از یک فایل حذف کنم؟

در اینجا، دستور اول محتوای آن را چاپ کرد product.txt و فرمان دوم فقط قسمت دوم فایل را چاپ می کند.

روش استفاده از متغیر در دستور awkروش استفاده از متغیر در دستور awk

مثال – 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.

خروجی:

پس از اجرای اسکریپت خروجی زیر ظاهر می شود.

$ گربه student.txt | بیخیال “NR < 4"

روش استفاده از متغیر در دستور awkروش استفاده از متغیر در دستور awk

مثال – 7: استفاده از متغیر داخلی، NF با دستور awk

متغیر NF در دستور awk برای شمارش تعداد کل فیلدها در هر خط از یک فایل استفاده می شود. اسکریپت awk زیر برای فایل اعمال می شود، student.txt که در مثال قبلی ایجاد شده است. فیلمنامه خواهد شد print آن خطوط از student.txt فایلی که مجموع فیلدها کمتر از 3 باشد. دستور را از terminal.

$ گربه student.txt | بیخیال “NF < 3"

خروجی:

فقط یک خط در فایل وجود دارد که تعداد کل فیلدها کمتر از 3 است که به عنوان خروجی چاپ می شود.

روش استفاده از متغیر در دستور awkروش استفاده از متغیر در دستور awk

مثال – 8: استفاده از متغیر داخلی، OFS با دستور awk

متغیر OFS در دستور awk برای اضافه کردن جداکننده میدان خروجی در خروجی استفاده می شود. product.txt فایل در این مثال برای نشان دادن استفاده از متغیر OFS استفاده شده است. ‘:’ به عنوان جداکننده فیلد در فایل product.txt استفاده می شود. اسکریپت awk زیر از «->» به عنوان مقدار OFS استفاده می کند و فیلدهای دوم و سوم فایل print با افزودن این جداکننده دستورات را از terminal.

$ گربه product.txt
$ بیخیال -اف ‘:’ ‘BEGIN{OFS=”->”;} {print $2, $3;}’ product.txt

خروجی:

خروجی زیر خواهد بود print پس از اجرای دستورات

روش استفاده از متغیر در دستور awkروش استفاده از متغیر در دستور awk

نتیجه:

در این آموزش سعی شده بیشتر موارد استفاده از متغیرهای awk توضیح داده شود. امیدوارم خواننده بتواند پس از تمرین این آموزش از متغیرهای awk به درستی در اسکریپت استفاده کند.

برای نگارش بخشهایی از این متن ممکن است از ترجمه ماشینی یا هوش مصنوعی GPT استفاده شده باشد
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم

زمان انتشار: 1402-12-31 20:12:04

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

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید