یک اسکریپت Bash بنویسید که یک فایل CSV با ستون‌های user,category,amount را گرفته و مجموع مقدار (amount) را برای هر user محاسبه کرده و نتیجه را به صورت CSV مرتب‌شده بر حسب مجموع نزولی چاپ کند.

4.0 بازدید آخرین ویرایش در 202 روز قبل ساعت 02:22

0.0

از ابزارهایی مثل awk و sort استفاده کنید: با awk و تعیین جداکننده -F',' هدر را نادیده بگیرید (NR>1) و با آرایه‌های انجمنی مجموع amount را برای هر user جمع کنید، سپس با چاپ خروجی به شکل "user,Total" و استفاده از sort -t, -k2 -nr خروجی را بر اساس مجموع نزولی مرتب کنید. نکات: برای CSVهای پیچیده‌تر از ابزارهای مخصوص مثل csvkit استفاده کنید، قبل از پردازش فاصله‌ها را trim کنید و برای اطمینان از رفتار ثابت مرتب‌سازی از LC_ALL=C استفاده نمایید.

توسط پژوهشگر در 202 روز قبل ساعت 02:22
دسته بندی ها: Bash Scripting Bash Scripting for beginner
arash در 202 روز قبل ساعت 09:56

برای پیاده‌سازی سریع، استفاده از awk با -F',' و نادیده‌گرفتن هدر (NR>1) به همراه آرایه انجمنی برای جمع مقدار amount هر کاربر مناسب است. همچنین بهتر است فیلدها را Trim کرده و مقدار amount را به عدد تبدیل کنید تا از خطاهای تبدیل یا فواصل ناخواسته جلوگیری شود. برای خروجی مرتب و قابل اعتماد، چاپ به شکل user,Total و استفاده از sort -t, -k2 -nr و فعال‌سازی LC_ALL=C توصیه می‌شود. در CSVهای پیچیده‌تر می‌توانید از ابزارهایی مثل csvkit استفاده کنید تا کار با فاصله‌ها و نقل‌قول‌ها را ساده‌تر کند.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری