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

سرور مجازی NVMe

چگونه print طیف وسیعی از ستون ها با استفاده از دستور “awk”.

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


دستور awk یکی از دستوراتی است که می توان از آن استفاده کرد print طیف وسیعی از ستون ها از داده های جدولی در لینوکس. دستور awk را می توان مستقیماً از terminal با اجرای فایل اسکریپت `awk`. در این آموزش به شما نشان خواهیم داد که چگونه این کار را انجام دهید print طیف وسیعی از ستون ها از داده های جدولی.

مثال 1: چاپ طیفی از ستون ها از خروجی فرمان

دستور زیر خواهد بود print ستون های دوم، سوم و چهارم از خروجی فرمان، ‘ls -l‘. در اینجا، شماره ستون ها به صراحت بیان شده است، اما دستور کارآمدتر برای چاپ همان محدوده ستون ها در مثال بعدی نشان داده شده است.

$ ls | بیخیال ‘{ print $2, $3, $4 }’

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

چگونه print طیف وسیعی از ستون ها با استفاده از دستور "awk".

مثال 2: با استفاده از a، محدوده ستون ها را از یک فایل چاپ کنید برای حلقه

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

شناسه CSE203 CSE102 CSE202
1109 78 87 79
1167 67 81 70
1190 56 61 69
1156 89 55 78
199 54 66 58

دستور awk زیر خواهد بود print سه ستون اول marks.txt. را برای حلقه استفاده می شود print مقادیر ستون و حلقه شامل سه مرحله است. را NF متغیر تعداد کل فیلدها یا ستون های فایل را نشان می دهد.

$ گربه marks.txt
$ بیخیال ‘{for(i=1;i<=NF-1;i++) printf $i" "; print ""}" marks.txt

با اجرای دستور خروجی زیر تولید خواهد شد. خروجی دانش آموز را نشان می دهد شناسنامه ها و علائم برای CSE203 و CSE102.

پیشنهاد می‌کنیم بخوانید:  عملیات حسابی بش

چگونه print طیف وسیعی از ستون ها با استفاده از دستور "awk".چگونه print طیف وسیعی از ستون ها با استفاده از دستور "awk".

مثال 3: با تعریف متغیرهای شروع و پایان، محدوده ستون ها را چاپ کنید

دستور awk زیر خواهد بود print سه ستون اول از دستور خروجی ‘ls -l’ با مقداردهی اولیه راه افتادن و پایان یافتن متغیرها در اینجا، ارزش راه افتادن متغیر 1 است و مقدار the پایان یافتن متغیر 3 است. این متغیرها در یک حلقه for به تکرار می شوند print مقادیر ستون

$ ls | بیخیال ‘ BEGIN { first = 1; آخرین = 3 }
{ for (i = first; i < last; i++) { printf("%s ", $i) } print $last }'

پس از اجرای دستور خروجی زیر ظاهر می شود. خروجی سه مقدار ستون اول خروجی، ‘ls -l’ را نشان می دهد.

چگونه print طیف وسیعی از ستون ها با استفاده از دستور "awk".چگونه print طیف وسیعی از ستون ها با استفاده از دستور "awk".

مثال 4: طیفی از ستون ها را از یک فایل با قالب بندی چاپ کنید

دستور awk زیر خواهد بود print سه ستون اول از marks.txt استفاده کردن printf و جداکننده میدان خروجی (OFS). در اینجا، حلقه for شامل سه مرحله است و سه ستون به ترتیب از فایل چاپ می شود. OFS در اینجا برای اضافه کردن فاصله بین ستون ها استفاده می شود. هنگامی که مقدار شمارنده حلقه (i) برابر است پایان یافتن متغیر، سپس یک خط جدید (\n) تولید می شود.

$ گربه marks.txt
$ بیخیال -v شروع کنید=1 -v پایان=3 ‘{ برای (i=start; i<=end;i++) printf("%s%s",
$i،(i==end) ? “\n” : OFS) }’
marks.txt

پس از اجرای دستورات فوق خروجی زیر تولید خواهد شد.

چگونه print طیف وسیعی از ستون ها با استفاده از دستور "awk".چگونه print طیف وسیعی از ستون ها با استفاده از دستور "awk".

مثال 5: با استفاده از یک دستور شرطی، محدوده ستون ها را از یک فایل چاپ کنید

دستور awk زیر خواهد بود print اولین و آخرین ستون از یک فایل با استفاده از یک حلقه for و یک دستور if. در اینجا، حلقه for شامل چهار مرحله است. را راه افتادن و پایان یافتن متغیرها در اسکریپت برای حذف ستون های دوم و سوم از فایل با استفاده از شرط if استفاده می شوند. متغیر OFS برای اضافه کردن فاصله بین ستون ها و متغیر ORS برای اضافه کردن خط جدید (\n) پس از چاپ آخرین ستون استفاده می شود.

$ گربه marks.txt
$ بیخیال -v شروع کنید=2 -v پایان=3 ‘{ برای (i=1; i<=NF;i++)
if( i>=شروع && i<=پایان) ادامه دهید;
else printf(“%s%s”, $i,(i!=NF) ? OFS : ORS) }’
marks.txt

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

پیشنهاد می‌کنیم بخوانید:  جستجوی تاریخچه Bash

چگونه print طیف وسیعی از ستون ها با استفاده از دستور "awk".چگونه print طیف وسیعی از ستون ها با استفاده از دستور "awk".

مثال 6: با استفاده از متغیر NF محدوده ستون ها را از یک فایل چاپ کنید

دستور awk زیر خواهد بود print اولین و آخرین ستون از فایل با استفاده از یک متغیر NF. از هیچ حلقه یا دستور شرطی استفاده نمی شود print مقادیر ستون NF تعداد فیلدها را نشان می دهد. در marks.txt چهار ستون وجود دارد. $(NF-3) ستون اول را تعریف می کند و $NF آخرین ستون را نشان می دهد.

$ گربه marks.txt
$ بیخیال ‘{print $(NF-3)” “$NF}” marks.txt

خروجی زیر با اجرای دستورات بالا تولید می شود. خروجی اولین و آخرین ستون marks.txt را نشان می دهد.

چگونه print طیف وسیعی از ستون ها با استفاده از دستور "awk".چگونه print طیف وسیعی از ستون ها با استفاده از دستور "awk".

مثال 7: با استفاده از ()substr و index() محدوده ستون ها را از یک فایل چاپ کنید.

در صورتی که مقدار آرگومان دوم در مقدار آرگومان اول وجود داشته باشد، تابع index() موقعیتی را برمی‌گرداند. تابع ()substr می تواند سه آرگومان بگیرد. آرگومان اول یک مقدار رشته، آرگومان دوم موقعیت شروع و آرگومان سوم طول است. آرگومان سوم substr() در دستور زیر حذف شده است. از آنجا که ستون از $1 در دستور awk شروع می شود، تابع index() $3 را برمی گرداند و دستور print از 3 تا 4 دلار

$ گربه marks.txt
$ بیخیال ‘{print substr($0,index($0,$3))}’ marks.txt

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

چگونه print طیف وسیعی از ستون ها با استفاده از دستور "awk".چگونه print طیف وسیعی از ستون ها با استفاده از دستور "awk".

مثال 8: به ترتیب print طیف وسیعی از ستون ها از یک فایل با استفاده از printf

دستور awk زیر خواهد بود print ستون های اول، دوم و سوم marks.txt با تنظیم فضای کافی برای 10 کاراکتر.

$ گربه marks.txt
$ بیخیال ‘//{printf “%10s %10s %10s\n”,$1,$3,$2 }’ marks.txt

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

چگونه print طیف وسیعی از ستون ها با استفاده از دستور "awk".چگونه print طیف وسیعی از ستون ها با استفاده از دستور "awk".

نتیجه

راه های مختلفی برای این وجود دارد print محدوده ستون ها از خروجی فرمان یا یک فایل. این آموزش نشان می دهد که چگونه دستور awk می تواند به کاربران لینوکس کمک کند print محتوا از داده های جدولی

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

زمان انتشار: 1402-12-31 05:40:03

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

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

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