Подтвердить что ты не робот

Как разбить CSV файлы в соответствии с указанным числом строк?

У меня есть файл CSV (около 10 000 строк, каждая строка из 300 столбцов), хранящаяся на сервере LINUX. Я хочу разбить этот CSV файл на 500 файлов CSV по 20 записей. (Каждый из них имеет тот же заголовок CSV, что и в исходном CSV)

Есть ли какая-нибудь команда linux, чтобы помочь в этом преобразовании?

4b9b3361

Ответ 2

Используйте команду разделения Linux:

split -l 20 file.txt new    

Разделите файл "file.txt" на файлы, начинающиеся с имени "новый", каждый из которых содержит по 20 строк текста.

Введите man split в приглашении Unix для получения дополнительной информации. Однако вам сначала нужно удалить заголовок из файла file.txt(например, с помощью команды tail), а затем добавить его обратно в каждый из разделенных файлов.

Ответ 3

Это должно сделать это для вас - все ваши файлы в конечном итоге называются 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

Ответ 4

Это должно работать !!!

file_name= имя файла, который вы хотите разделить.
10000= количество строк в каждом файле разделения
file_part_= Префикс имени разделяемого файла (file_part_0, file_part_1, file_part_2..etc продолжается)

split -d -l 10000 имя_файла .csv file_part_