8

我只是将一个非常大的 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
4

2 回答 2

17

只是close写入后的文件:

awk -F, '{print > $2; close($2)}' test1.csv
于 2013-10-28T20:09:22.710 回答
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 列的值相同的文件中,假设没有引用字段等。

于 2013-10-28T20:05:32.093 回答