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

سرور مجازی NVMe

10 مثال عالی از دستور Awk

0 28
زمان لازم برای مطالعه: 2 دقیقه


دستور Awk ابزار قدرتمندی برای process داده ها. داده‌های ورودی را دریافت می‌کند، آن‌ها را دستکاری می‌کند و نتایج را در خروجی استاندارد می‌دهد. عملیات های مختلفی را می توان انجام داد روی ردیف ها و ستون های یک فایل

دانستن نکات ضروری دستور “awk” برای پردازش کارآمد داده ها بسیار مهم است و این پست ویژگی های کلیدی دستور “awk” را پوشش می دهد. بیایید ابتدا نحو را بررسی کنیم:

$ بیخیال [options] [file]

برخی از گزینه های رایج در جدول زیر آورده شده است:

گزینه شرح
-اف برای تعیین جداکننده فایل
فایلی که حاوی اسکریپت “awk” است را مشخص کنید
-v برای اختصاص متغیر

بیایید به چند مثال در مورد استفاده از دستور “awk” نگاهی بیندازیم و برای نمایش یک فایل متنی به نام testFile.txt:

1. چگونه print ستونی از یک فایل با دستور awk؟

دستور “awk” را می توان برای دریافت یک ستون خاص از فایل متنی استفاده کرد. به print محتوای استفاده از فایل:

$گربه testFile.txt

10 مثال عالی از دستور Awk

در حال حاضر، به print از ستون دوم فایل استفاده کنید:

$بیخیال{print 2 دلار}testFile.txt

10 مثال عالی از دستور Awk10 مثال عالی از دستور Awk

به print بیش از یک فیلد، از دستور استفاده کنید:

$بیخیال{print 1 دلار،2 دلار،3 دلار}testFile.txt

10 مثال عالی از دستور Awk10 مثال عالی از دستور Awk

اگر از کاما “” استفاده نکنید، خروجی بدون فاصله خواهد بود:

$بیخیال{print 1 دلار2 دلار3 دلار}testFile.txt

10 مثال عالی از دستور Awk10 مثال عالی از دستور Awk

2. روش استفاده از عبارت منظم با دستور awk:

برای تطبیق رشته ها یا هر عبارتی، به عنوان مثال، از اسلش های “//” استفاده می کنیم، اگر بخواهید print نام افرادی که در حال مطالعه «تاریخ» هستند، سپس استفاده کنید:

$بیخیال/تاریخ/ {print 2 دلار}testFile.txt

10 مثال عالی از دستور Awk10 مثال عالی از دستور Awk

خروجی به وضوح نشان می دهد که فقط “سام” و “تامی” در حال مطالعه دوره “تاریخ” هستند.

3. روش استفاده از عبارت رابطه ای با دستور awk:

برای مطابقت با محتوای یک فیلد خاص، می توان از عبارت رابطه ای استفاده کرد. برای تطبیق هر رشته یا عبارت با یک فیلد، فیلد را مشخص کنید و از عملگر مقایسه “~” با الگوی ارائه شده در دستور زیر استفاده کنید:

$بیخیال3 دلار ~/است/ {print 2 دلار}testFile.txt

10 مثال عالی از دستور Awk10 مثال عالی از دستور Awk

خروجی بالا هر فیلد در ستون 2 را در مقابل هر فیلدی که حاوی “is” در ستون 3 است نمایش می دهد.

پیشنهاد می‌کنیم بخوانید:  چگونه خطوط خالی را در Grep نادیده بگیرم؟

و برای به دست آوردن خروجی مخالف دستور بالا از “! ~” عملگر:

$بیخیال3 دلار! ~/است/ {print 2 دلار}testFile.txt

10 مثال عالی از دستور Awk10 مثال عالی از دستور Awk

برای مقایسه، ما همچنین می توانیم از عملگرهایی مانند بزرگتر از “>” و کوچکتر از “<" و مساوی "=" نیز استفاده کنیم:

$بیخیال4 دلار>70 {print 2 دلار}testFile.txt

10 مثال عالی از دستور Awk10 مثال عالی از دستور Awk

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

4. روش استفاده از الگوی محدوده با دستور awk:

یک محدوده همچنین می تواند برای جستجو استفاده شود. به سادگی از کاما “” برای جدا کردن محدوده همانطور که در دستور زیر ذکر شده است استفاده کنید:

$بیخیال/جوئل/، /مارلین/ {print 3 دلار}testFile.txt

10 مثال عالی از دستور Awk10 مثال عالی از دستور Awk

خروجی موضوعات محدوده از “Joel” تا “Marlene” را از ستون 2 نشان می دهد. ما می توانیم از علامت مساوی دوگانه “==” برای تعریف یک محدوده استفاده کنیم. مثال زیر را ببینید:

$بیخیال4 دلار == 80، 4 دلار == 90 {print $0}testFile.txt

10 مثال عالی از دستور Awk10 مثال عالی از دستور Awk

خروجی نام افراد را از ستون 2 برای محدوده علامت “70 تا 80” از ستون 4 نمایش می دهد.

5. روش ترکیب الگو با استفاده از عملگر منطقی:

استفاده از عملگرهای منطقی مانند OR “||”، و “&&” به شما امکان می دهد الگوها را برای جستجو ترکیب کنید. از دستور زیر استفاده کنید

$بیخیال4 دلار>80 && 6 دلار>0.4 {print 2 دلار}testFile.txt

10 مثال عالی از دستور Awk10 مثال عالی از دستور Awk

دستور بالا نام افراد را در برابر فیلد چهارم بیشتر از 80 و فیلد ششم بزرگتر از 0.4 چاپ می کند. و تنها دو رکورد شرایط را برآورده می کنند.

6. عبارات ویژه دستور awk:

دو عبارت خاص وجود دارد، “شروع” و ”پایان”:

BEGIN: برای انجام یک عمل قبل از پردازش داده ها

END: برای انجام یک عمل پس از پردازش داده ها

$بیخیال ‘شروع {print “فرآوری آغاز شد”}; {print 2 دلار}; پایان {print “پردازش به پایان رسید”}testFile.txt

10 مثال عالی از دستور Awk10 مثال عالی از دستور Awk

7. متغیر داخلی مفید دستور awk:

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

متغیر شرح
NF تعداد فیلدهای داده را نشان می دهد
NR این شماره رکورد فعلی را نشان می دهد
نام فایل نام فایلی که در حال حاضر در حال پردازش است را نمایش می دهد
FS و OFS جداکننده میدان و جداکننده میدان خروجی
RS و ORS جداکننده رکورد و خروجی رکورد را جدا می کند
پیشنهاد می‌کنیم بخوانید:  روش اجرای یک اسکریپت Bash

مثلا:

$بیخیال ‘پایان{print ” فایل نام “FILENAME” دارای “فیلدهای” NF و “سوابق” NR است}testFile.txt

10 مثال عالی از دستور Awk10 مثال عالی از دستور Awk

ما از “END” استفاده می کنیم، اما اگر از “BEGIN” استفاده کنید، خروجی 0 فیلد و 0 رکورد را نشان می دهد.

10 مثال عالی از دستور Awk10 مثال عالی از دستور Awk

8. روش تغییر جداکننده رکورد:

جداکننده پیش فرض در رکورد معمولاً فاصله است. اگر یک کاما “”، یا “نقطه” وجود دارد. به عنوان جداکننده میدان خود، سپس از گزینه “FS” به همراه جداکننده استفاده کنید.

10 مثال عالی از دستور Awk10 مثال عالی از دستور Awk

بیایید فایل دیگری داشته باشیم که در آن فیلدهای داده با ویرگول “:” از هم جدا شوند:

گربه $ testFile2.txt

$awk ‘شروع {FS= “:”} {print 2 دلار}testFile2.txt

10 مثال عالی از دستور Awk10 مثال عالی از دستور Awk

از آنجایی که جداکننده فایل یک دونقطه است، اما دستور “awk” حتی برای فایل هایی مانند این مفید است، به سادگی از گزینه “FS” استفاده کنید.

از “-F” نیز می توان استفاده کرد:

$بیخیال -اف “:”{print 2 دلار}testFile2.txt

10 مثال عالی از دستور Awk10 مثال عالی از دستور Awk

جداکننده رکورد پیش فرض “newline” است و برای تنظیم جداکننده رکورد روی “:” از:

$بیخیال ‘شروع {RS = “:”}{print 1 دلار}testFile2.txt

10 مثال عالی از دستور Awk10 مثال عالی از دستور Awk

9. اقدامات Awk:

اکشن‌های Awk برنامه‌های کوچکی هستند که با براکت‌های «{}» احاطه شده‌اند و بیش از یک عبارت دارند که با نیم‌کون «;» از هم جدا شده‌اند.

بیشترین استفاده از دستور “awk” عبارت است از “print” بیانیه. به عنوان مثال، به print یک متن با هر رکورد، از رشته متن در نقل قول استفاده کنید:

$بیخیال{“این یک میدان است” 2 دلار}testfile.txt

10 مثال عالی از دستور Awk10 مثال عالی از دستور Awk

بیایید یک عملیات جمع ساده را با استفاده از awk انجام دهیم:

$بیخیال{مجموع += 4 دلار} پایان {printf%d\n”, مجموع}testFile.txt

10 مثال عالی از دستور Awk10 مثال عالی از دستور Awk

10. ایجاد یک برنامه awk:

بیایید با برنامه نویسی “awk” شروع کنیم، برنامه نویسی ارائه شده در زیر به سادگی ضرب را انجام می دهد:

شروع {
من=2
در حالی که(j<4)
{
print «تکثیر 2 با ” j ” است ” i*j;
j++
}
}

10 مثال عالی از دستور Awk10 مثال عالی از دستور Awk

برنامه را با نام ذخیره کنیدmyCode.awkو برای اجرای آن، آن را باز کنید terminal و تایپ کنید:

$بیخیال myCode.awk

نتیجه:

دستور “awk” یک دستور مفید است processاسکن داده های فایل های متنی، مانند جداسازی هر فیلد خاصی از یک فایل. ما از دستور “awk” استفاده می کنیم. جستجوی هر چیزی را به هر شکل یا الگوی از فایل های متنی آسان تر می کند. در این راهنما، ما اصول اولیه دستور “awk” و استفاده از آن را درک می کنیم. دستور “awk” داده ها را تایید می کند، گزارش تولید می کند و حتی فایل ها را تجزیه می کند. استفاده از دستورات ساده “awk” همچنین کاربران را قادر می سازد تا برنامه های کوچکی را بنویسند process داده ها کارآمدتر

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

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

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

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

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