Как разделить CSV файлы в соответствии с количеством строк, указанных?
У меня есть CSV-файл (около 10 000 строк ; каждая строка имеет 300 столбцов), хранящихся на сервере LINUX. Я хочу разбить этот CSV-файл на 500 CSV-файлов по 20 записей каждый. (Каждый из которых имеет тот же заголовок CSV, что и в исходном CSV)
есть ли команда linux, чтобы помочь этому преобразованию?
4 ответа:
это работает:
tail -n +2 file.txt | split -l 20 - split_ for file in split_* do head -n 1 file.txt > tmp_file cat $file >> tmp_file mv -f tmp_file $file done
найдено на: http://edmondscommerce.github.io/linux/linux-split-file-eg-csv-and-keep-header-row.html
используйте команду разделения Linux:
split -l 20 file.txt new
разбить файл файл".txt "в файлы, начинающиеся с имени "new", каждый из которых содержит по 20 строк текста.
тип
man split
в строке Unix для получения дополнительной информации. Однако вам придется сначала удалить заголовок из файла.тхт (с помощьюtail
command, например), а затем добавьте его обратно в каждый из разделенных файлов.
Это должно сделать это за вас - все ваши файлы будут называться Part1-Part500.
#!/bin/bash FILENAME=10000.csv HDR=$(head -1 $FILENAME) # Pick up CSV header line to apply to each file split -l 20 $FILENAME xyz # Split the file into chunks of 20 lines each n=1 for f in xyz* # Go through all newly created chunks do echo $HDR > Part${n} # Write out header to new file called "Part(n)" cat $f >> Part${n} # Add in the 20 lines from the "split" command rm $f # Remove temporary file ((n++)) # Increment name of output part done