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