(адаптация вопроса Дэвида Эриксона здесь )
С учетом файла CSV со столбцами A, B и C и некоторыми значениями:
echo 'a,b,c' > file.csv
head -c 10000000 /dev/urandom | od -d | awk 'BEGIN{OFS = ","}{print $2, $3, $4}' | head -n 10000 >> file.csv
Мы бы хотели отсортировать по столбцам a и b:
sort -t ',' -k1,1n -k2,2n file.csv > file_.csv
head -n 3 file_.csv
>a,b,c
3,50240,18792
7,54871,39438
А затем для каждой уникальной пары (a, b)
создать новый CSV под названием '{a}_Invoice_{b}.csv'
.
Основная задача, похоже, заключается в из-за накладных расходов ввода-вывода при написании тысяч файлов - я начал пробовать с awk
, но столкнулся с awk: 17 makes too many open files
.
Есть ли более быстрый способ сделать это, в awk, Python или какой-то другой другой язык сценариев?
Дополнительная информация:
- Я знаю, что могу сделать это в Pandas - я ищу более быстрый способ использования обработки текста
- Хотя я использовал
urandom
для генерации образцов данных, реальные данные имеют повторяющиеся значения: например, несколько строк, где a=3, b=7
. Если это так, они должны быть сохранены как один файл. (Идея состоит в том, чтобы скопировать Pandas 'groupby -> to_csv)