как разделить большой csv-файл в командной строке unix
Я просто разделяю очень большой csv-файл на части. Когда я запускаю следующую команду. не полностью разделяется, а возвращает мне следующую ошибку. как я могу избежать разделения всего файла.
awk -F, '{print > }' test1.csv
awk: YY1 makes too many open files
input record number 31608, file test1.csv
source line number 1
2 ответов
у вас должно быть много строк. Вы уверены, что вторая строка повторяется достаточно, чтобы поместить эти записи в отдельный файл? В любом случае, awk держит файлы открытыми до конца. Вам понадобится процесс, который может закрыть дескрипторы файлов, когда они не используются.
Perl на помощь. Снова.
#!perl
while( <> ) {
@content = split /,/, $_;
open ( OUT, ">> $content[1]") or die "whoops: $!";
print OUT $_;
close OUT;
}
использование: script.pl your_monster_file.csv
выводит всю строку в файл с именем, совпадающим со значением второго столбца CSV в текущем каталоге, предполагая, что нет цитирует поля и т. д.