یک اسکریپت Bash بنویسید که یک فایل CSV با هدر را خوانده و ستونهای name، date و amount را به ترتیب date, name, amount مرتب کرده، فرمت تاریخ را از YYYY-MM-DD به DD/MM/YYYY تبدیل نموده و خروجی را در یک فایل CSV جدید ذخیره کند.
9.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:37 0.0
برای حل این مسئله میتوانید از ابزارهای استاندارد خط فرمان مثل awk، cut و sed استفاده کنید؛ فرض کنید فایل ورودی هدر دارد و فیلدها با کاما جدا شدهاند و فیلدها داخل نقلقول پیچیده نیستند. ابتدا هدر را پردازش کرده و ستونها را به ترتیب جدید چاپ کنید، سپس برای هر سطر داده با awk فیلد تاریخ را با split یا substr جدا کرده و ترتیب روز/ماه/سال را بسازید و همراه با بقیه فیلدها با OFS="," خروجی بدهید؛ نکتهها: خطهای خالی را نادیده بگیرید، و اگر میخواهید انعطاف بیشتر داشته باشید از آرگومانهای اسکریپت برای نام فایل ورودی/خروجی استفاده کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای کار با CSV ساده با هدر و فیلدهای بدون نقل قول پیچیده، میتوانید از awk استفاده کنید و در خط اول هدر را پردازش کرده و ستونها را به ترتیب date، name، amount چاپ کنید. برای تبدیل تاریخ از YYYY-MM-DD به DD/MM/YYYY میتوانید با split یا substr تاریخ را جدا کرده و مجدداً مرتب کنید و خروجی را با OFS="," تشکیل دهید. حتماً خطوط خالی را نادیده بگیرید و برای انعطاف بیشتر از آرگومانهای اسکریپت برای نام فایل ورودی و خروجی استفاده کنید تا Script دوبارهکاری کمتری داشته باشد. همچنین پیشنهاد میشود ورودی را قبل از اجرای اصلی بررسی کرده و در صورت وجود فیلدهای ناقص یا دادههای غیرمرتبط، خط را کنار گذاشته یا لاگ کنید تا خروجی پایدار و سازگار باقی بماند.
گزارش