از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
چگونه print طیف وسیعی از ستون ها با استفاده از دستور “awk”.
سرفصلهای مطلب
دستور awk یکی از دستوراتی است که می توان از آن استفاده کرد print طیف وسیعی از ستون ها از داده های جدولی در لینوکس. دستور awk را می توان مستقیماً از terminal با اجرای فایل اسکریپت `awk`. در این آموزش به شما نشان خواهیم داد که چگونه این کار را انجام دهید print طیف وسیعی از ستون ها از داده های جدولی.
مثال 1: چاپ طیفی از ستون ها از خروجی فرمان
دستور زیر خواهد بود print ستون های دوم، سوم و چهارم از خروجی فرمان، ‘ls -l‘. در اینجا، شماره ستون ها به صراحت بیان شده است، اما دستور کارآمدتر برای چاپ همان محدوده ستون ها در مثال بعدی نشان داده شده است.
خروجی زیر با دستور بالا تولید می شود.
مثال 2: با استفاده از a، محدوده ستون ها را از یک فایل چاپ کنید برای حلقه
برای دنبال کردن این مثال و نمونه های دیگر در این آموزش، یک فایل متنی با نام ایجاد کنید marks.txt با مطالب زیر:
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 متغیر تعداد کل فیلدها یا ستون های فایل را نشان می دهد.
$ بیخیال ‘{for(i=1;i<=NF-1;i++) printf $i" "; print ""}" marks.txt
با اجرای دستور خروجی زیر تولید خواهد شد. خروجی دانش آموز را نشان می دهد شناسنامه ها و علائم برای CSE203 و CSE102.
مثال 3: با تعریف متغیرهای شروع و پایان، محدوده ستون ها را چاپ کنید
دستور awk زیر خواهد بود print سه ستون اول از دستور خروجی ‘ls -l’ با مقداردهی اولیه راه افتادن و پایان یافتن متغیرها در اینجا، ارزش راه افتادن متغیر 1 است و مقدار the پایان یافتن متغیر 3 است. این متغیرها در یک حلقه for به تکرار می شوند print مقادیر ستون
{ for (i = first; i < last; i++) { printf("%s ", $i) } print $last }'
پس از اجرای دستور خروجی زیر ظاهر می شود. خروجی سه مقدار ستون اول خروجی، ‘ls -l’ را نشان می دهد.
مثال 4: طیفی از ستون ها را از یک فایل با قالب بندی چاپ کنید
دستور awk زیر خواهد بود print سه ستون اول از marks.txt استفاده کردن printf و جداکننده میدان خروجی (OFS). در اینجا، حلقه for شامل سه مرحله است و سه ستون به ترتیب از فایل چاپ می شود. OFS در اینجا برای اضافه کردن فاصله بین ستون ها استفاده می شود. هنگامی که مقدار شمارنده حلقه (i) برابر است پایان یافتن متغیر، سپس یک خط جدید (\n) تولید می شود.
$ بیخیال -v شروع کنید=1 -v پایان=3 ‘{ برای (i=start; i<=end;i++) printf("%s%s",
$i،(i==end) ? “\n” : OFS) }’ marks.txt
پس از اجرای دستورات فوق خروجی زیر تولید خواهد شد.
مثال 5: با استفاده از یک دستور شرطی، محدوده ستون ها را از یک فایل چاپ کنید
دستور awk زیر خواهد بود print اولین و آخرین ستون از یک فایل با استفاده از یک حلقه for و یک دستور if. در اینجا، حلقه for شامل چهار مرحله است. را راه افتادن و پایان یافتن متغیرها در اسکریپت برای حذف ستون های دوم و سوم از فایل با استفاده از شرط if استفاده می شوند. متغیر OFS برای اضافه کردن فاصله بین ستون ها و متغیر ORS برای اضافه کردن خط جدید (\n) پس از چاپ آخرین ستون استفاده می شود.
$ بیخیال -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 را نشان می دهد.
مثال 6: با استفاده از متغیر NF محدوده ستون ها را از یک فایل چاپ کنید
دستور awk زیر خواهد بود print اولین و آخرین ستون از فایل با استفاده از یک متغیر NF. از هیچ حلقه یا دستور شرطی استفاده نمی شود print مقادیر ستون NF تعداد فیلدها را نشان می دهد. در marks.txt چهار ستون وجود دارد. $(NF-3) ستون اول را تعریف می کند و $NF آخرین ستون را نشان می دهد.
$ بیخیال ‘{print $(NF-3)” “$NF}” marks.txt
خروجی زیر با اجرای دستورات بالا تولید می شود. خروجی اولین و آخرین ستون marks.txt را نشان می دهد.
مثال 7: با استفاده از ()substr و index() محدوده ستون ها را از یک فایل چاپ کنید.
در صورتی که مقدار آرگومان دوم در مقدار آرگومان اول وجود داشته باشد، تابع index() موقعیتی را برمیگرداند. تابع ()substr می تواند سه آرگومان بگیرد. آرگومان اول یک مقدار رشته، آرگومان دوم موقعیت شروع و آرگومان سوم طول است. آرگومان سوم substr() در دستور زیر حذف شده است. از آنجا که ستون از $1 در دستور awk شروع می شود، تابع index() $3 را برمی گرداند و دستور print از 3 تا 4 دلار
$ بیخیال ‘{print substr($0,index($0,$3))}’ marks.txt
خروجی زیر با اجرای دستورات بالا تولید می شود.
مثال 8: به ترتیب print طیف وسیعی از ستون ها از یک فایل با استفاده از printf
دستور awk زیر خواهد بود print ستون های اول، دوم و سوم marks.txt با تنظیم فضای کافی برای 10 کاراکتر.
$ بیخیال ‘//{printf “%10s %10s %10s\n”,$1,$3,$2 }’ marks.txt
خروجی زیر با اجرای دستورات بالا تولید می شود.
نتیجه
راه های مختلفی برای این وجود دارد print محدوده ستون ها از خروجی فرمان یا یک فایل. این آموزش نشان می دهد که چگونه دستور awk می تواند به کاربران لینوکس کمک کند print محتوا از داده های جدولی
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم
زمان انتشار: 1402-12-31 05:40:03