از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
مجموع یک ستون را با استفاده از اسکریپت “Awk” در Bash محاسبه کنید
سرفصلهای مطلب
هنگامی که داده ها در یک فایل در قالب جدولی ذخیره می شوند که حاوی یک یا چند ستون از داده های عددی است و در صورت نیاز به محاسبه مجموع یک ستون با داده های عددی، می توان از اسکریپت “awk” برای انجام این کار استفاده کرد. . اسکریپت “awk” در Bash برای اهداف زیادی استفاده می شود. استفاده از اسکریپت “awk” در Bash برای محاسبه مجموع یک ستون در این آموزش نشان داده شده است.
مثال های مختلف محاسبه مجموع ستون
دستور “awk” را می توان به روش های مختلف برای محاسبه مجموع یک ستون از یک فایل حاوی داده های عددی استفاده کرد. فایل می تواند یک فایل CSV یا یک فایل متنی باشد. روش های مختلف محاسبه مجموع یک ستون در این قسمت از آموزش نشان داده شده است.
مثال 1: محاسبه مجموع یک ستون با استفاده از دستور ساده “Awk”
یک فایل متنی با نام “courses.txt” با داده های زیر ایجاد کنید. ستون دوم این فایل حاوی داده های عددی است و فایل حاوی داده های عنوان نیست:
CSE407 1.0
CSE305 3.0
ACC101 2.0
یک فایل Bash با اسکریپت زیر ایجاد کنید که نام فایل را از کاربر می گیرد. اگر نام فایل با فایل “courses.txt” مطابقت داشته باشد، مجموع مقادیر ستون دوم از این فایل با استفاده از دستور “awk” محاسبه می شود. دستور “awk” همراه با دستور “cat” در اینجا برای خواندن محتوای ستون دوم فایل “courses.txt” استفاده می شود. سپس مقدار جمع چاپ می شود.
#نام فایل را بگیرید
اکو -n “نام فایل را وارد کنید:”
خواندن نام فایل
#بررسی کنید نام فایل معتبر داده شده باشد یا خیر
اگر [[ $filename != “courses.txt” ]]; سپس
اکو “نام فایل نامعتبر داده شده است.”
خروج 0
فی
#مجموع کل ساعت اعتبار را محاسبه کنید
جمع=`گربه $filename | بیخیال ‘{sum+=$2} END {print “کل ساعت اعتبار دوره: ” مجموع}”`
#مقدار محاسبه شده را چاپ کنید
اکو $ مجموع
خروجی زیر مجموع 2.0+1.0+3.0+2.0 را نشان می دهد که 8.0 است:
مثال 2: محاسبه مجموع یک ستون با استفاده از دستور ساده “Awk” با NR
یک فایل CSV با نام “employees.csv” با داده های زیر ایجاد کنید. ستون سوم این فایل شامل داده های عددی و فایل حاوی داده های عنوان است:
5623مهراب حسین 90000
1355میلا چاودری، 125000
3517جعفر اقبال، 300000
7554ضیاء رحمان 450000
8652، روپا چاکروبارتی، 260000
یک فایل Bash با اسکریپت زیر ایجاد کنید که نام فایل را از command-line بحث و جدل. اگر نام فایل با فایل “employees.csv” مطابقت داشته باشد، مجموع مقادیر ستون سوم به استثنای عنوان این فایل با استفاده از دستور “awk” محاسبه می شود. دستور “awk” در اینجا از مقدار “NR” برای حذف عنوان ستون سوم فایل استفاده می کند. سپس مقدار جمع چاپ می شود.
#بررسی کنید که آیا نام فایل داده شده است یا خیر
اگر [ $# -lt 1 ]; سپس
اکو “برهان وجود ندارد.”
خروج 0
فی
نام فایل=1 دلار
#بررسی کنید که آیا نام فایل معتبر داده شده است یا خیر
اگر [[ $filename != “employees.csv” ]]; سپس
اکو “نام فایل نامعتبر داده شده است.”
خروج 0
فی
#مجموع فیلد حقوق و دستمزد فایل staffs.csv را محاسبه کنید
جمع=`بیخیال -اف “” ‘NR!=1{Total=Total+$3} END{print “مجموع حقوق کارکنان: $” مجموع}” >#مقدار محاسبه شده را چاپ کنید
اکو $ مجموع
اسکریپت دو بار در خروجی زیر اجرا می شود. اسکریپت در اولین اجرا بدون هیچ آرگومانی اجرا می شود، بنابراین پیغام خطا چاپ می شود. اسکریپت با یک مقدار آرگومان معتبر در اجرای دوم اجرا می شود، بنابراین مقدار جمع بندی چاپ می شود:
مثال 3: محاسبه مجموع یک ستون با استفاده از دستور ساده “Awk” با FS
یک فایل متنی با نام sales.txt با داده های زیر ایجاد کنید. “:” در فایل برای جدا کردن ستون و ستون دوم این فایل که حاوی داده های عددی است استفاده می شود. فایل حاوی هیچ داده سرفصل نیست.
فوریه:34000
مارس:120000
آوریل:56000
ممکن است:65000
ژوئن:20000
یک فایل Bash با اسکریپت زیر ایجاد کنید که نام فایل را از کاربر می گیرد. اگر نام فایل با فایل “sales.txt” مطابقت داشته باشد، مجموع مقادیر ستون دوم از این فایل با استفاده از دستور “awk” محاسبه می شود. دستور “awk” با مقدار “FS” در اینجا برای تعریف جداکننده فیلد بین ستون های فایل استفاده می شود. سپس مقدار جمع چاپ می شود.
#نام فایل را بگیرید
اکو -n “نام فایل را وارد کنید:”
خواندن نام فایل
#بررسی کنید که آیا نام فایل معتبر داده شده است یا خیر
اگر [[ $filename != “sales.txt” ]]; سپس
اکو “نام فایل نامعتبر داده شده است.”
خروج 0
دیگر
#محتوای فایل را چاپ کنید
گربه $filename
فی
#کل مبلغ فروش را با استفاده از جداکننده فیلد چاپ کنید
گربه $filename | بیخیال ‘BEGIN{FS=”:”; sum=0} {sum+=$2} END{print “Total sales: $” sum}”
اگر “sales.txt” به عنوان ورودی گرفته شود، خروجی زیر ظاهر می شود:
نتیجه
چندین روش برای محاسبه مجموع یک ستون از یک فایل با استفاده از دستور “awk” در این آموزش نشان داده شده است.
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم
زمان انتشار: 1402-12-28 19:37:03