我只是将一个非常大的csv文件拆分为部分。什么时候我运行以下命令。不完全拆分而是返回以下错误。我怎样才能避免拆分整个文件。
awk -F, '{print > $2}' test1.csv
awk: YY1 makes too many open files
input record number 31608, file test1.csv
source line number 1
答案 0 :(得分:17)
写完后只需close
个文件:
awk -F, '{print > $2; close($2)}' test1.csv
答案 1 :(得分:0)
你必须有很多行。您确定第二行重复足以将这些记录放入单个文件中吗?无论如何,awk将文件保持打开直到结束。您需要一个可以在不使用时关闭文件句柄的进程。
Perl救援。试。#!perl
while( <> ) {
@content = split /,/, $_;
open ( OUT, ">> $content[1]") or die "whoops: $!";
print OUT $_;
close OUT;
}
用法:script.pl your_monster_file.csv
将整行输出到一个名称与当前目录中第二个CSV列的值相同的文件中,假定没有带引号的字段等。