Intereting Posts
Опция «Совместимость теста соответствия X» для Hummingbird Exceed также доступна для Xming? как изменить `rm` на команду как` mv ~ / .trash` Unix на DEC VAX? найти шаблон поля в файле csv, а затем подсчитать уникальные значения полей Есть ли способ перенаправить файл, который написан Что означает «0» в списках прав владельца и группы файла / папки? Алиасы / функции Bash и параметры командной строки назначение привилегий чтения / записи для папки пользователю в CentOS 7 Как пропустить подкаталоги в цикле for, основанном только на имени? Сколько накладных расходов на хранение происходит вместе с cryptsetup и ext4? ошибка при попытке восстановить / прочитать только Bridge / Router с пользовательской логикой cgroups / systemd: Как создать группу для дерева процессов aes-x86_64.ko Нет такого файла или каталога для сбоя установки модуля после 4.12.9 Компиляция ядра удалите столбец массива разной длины

Проблемы с разделением файлов CSV

Я пытаюсь разбить файл csv на несколько файлов, используя команду ниже. Эта команда разбивается на 5 файлов, но данные усекаются в одном из файлов?

Как исправить эту проблему?

>>split -n 5 -d -a 2 testfile 

У меня есть 5001 строк на моем входе, но раздробление разбивается на

 file1 - 932 file2 - 910 file3 - 1149 file4 - 1044 file5 - 966 

Разве это не должно быть 1000 строк в файле?

split -n 5 разбивает файл на пять частей, делая все, кроме последней части, одинаковым количеством байтов .

Если вы хотите выполнять разделение только на границах линии, используйте:

 split -nl/5 -d -a 2 testfile 

Это подробно описано в документах GNU для split следующим образом:

'-n chunks'
'–number = ломти'
Разделить входные данные на выходные файлы, в которых могут быть:

  n generate n files based on current size of input k/n only output kth of n to stdout l/n generate n files without splitting lines l/k/n likewise but only output kth of n to stdout r/n like 'l' but use round robin distribution r/k/n likewise but only output kth of n to stdout 

Другой вариант – указать, сколько строк вы хотите в каждом выходном файле:

 split -l 1000 -d -a 2 testfile 

Вышеуказанное разбивает файл на части, каждый (кроме последнего) с 1000 строк. Это задокументировано как:

'-l lines'
'–lines = строки'
Поместите линии ввода ввода в каждый выходной файл.

Используйте параметр -l для split . На странице руководства:

  -l line_count Create smaller files n lines in length. 

например

 split -l 1000 afile.txt