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

線がたくさんあるはずです。これらのレコードを個々のファイルに入れるのに十分なだけ 2 行目が繰り返されますか? とにかく、awkは最後までファイルを開いたままにしています。使用していないときにファイル ハンドルを閉じることができるプロセスが必要になります。

救助にPerl。また。

#!perl    
while( <> ) {
    @content = split /,/, $_;
    open ( OUT, ">> $content[1]") or die "whoops: $!";
    print OUT $_;
    close OUT;
}

利用方法:script.pl your_monster_file.csv

引用符で囲まれたフィールドなどがないことを前提として、現在のディレクトリの 2 番目の CSV 列の値と同じ名前のファイルに行全体を出力します。

于 2013-10-28T20:05:32.093 に答える