У меня есть файл CSV, который я хотел бы разделить на основе поля в файле. По сути, может быть две марки, GVA и HBVL. Я хотел бы разбить файл на файл для каждого бренда, прежде чем импортировать его в базу данных.
Образец файла CSV
"D509379D5055821451C3695A3752DCCD",'1900-01-01 01:00:00',"M","1740","GVA",'2009-07-01 13:25:00',0
"159A58BE41012787D531C7157F688D86",'1900-01-01 00:00:00',"V","1880","GVA",'2008-06-06 11:21:00',0
"D0BB5C058794BBE4478DDA536D1E4872",'1900-01-01 00:00:00',"M","9270","GVA",'2007-09-18 13:21:00',0
"BCC7096803E5E60E05DC12FB9951E0CF",'1900-01-01 00:00:00',"M","3500","HBVL",'2007-09-18 13:21:00',1
"7F85FCE6F13775A8A3054E3438B81599",'1900-01-01 00:00:00',"M","3970","HBVL",'2007-09-18 13:20:00',0
Часть проблемы - размер файла. Это около 39 МБ. Моя первоначальная попытка это выглядела так:
while read line ; do
name=`echo $line | sed -n 's/\(.*\)"\(GVA\|HBVL\)",\(.*\)$/\2/ p' | tr [:upper:] [:lower:] `
info=`echo $line | sed -n 's/\(.*\)"\(GVA\|HBVL\)",\(.*\)$/\1\3/ p'`
echo "${info}" >> ${BASEDIR}/${today}/${name}.txt
done < ${file}
Примерно через 2,5 часа было обработано только около 1/2 файла. У меня есть другой файл, который может иметь размер до 250 МБ, и я не могу себе представить, сколько времени это займет.
То, что я хотел бы сделать, это вывести марку из строки и записать строку в файл с именем марки. Я могу удалить марку, но я не знаю, как использовать ее для создания файла. Я начал с sed, но я не рекомендую использовать другой язык, если он более уместен.