我只是將一個非常大的csv文件拆分爲多個部分。當我運行以下命令時。不完全分裂,而是返回我以下錯誤。我怎樣才能避免拆分整個文件。如何在unix命令行中拆分大型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
我只是將一個非常大的csv文件拆分爲多個部分。當我運行以下命令時。不完全分裂,而是返回我以下錯誤。我怎樣才能避免拆分整個文件。如何在unix命令行中拆分大型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
只要close
的文件後寫:
awk -F, '{print > $2; close($2)}' test1.csv
你必須有很多行。你確定第二行重複足夠多的記錄到一個單獨的文件?無論如何,awk將文件保持打開狀態直到結束。您需要一個可以在不使用時關閉文件句柄的進程。
Perl來拯救。再次。
#!perl
while(<>) {
@content = split /,/, $_;
open (OUT, ">> $content[1]") or die "whoops: $!";
print OUT $_;
close OUT;
}
用法:script.pl your_monster_file.csv
輸出整行到名爲一樣在當前目錄中的第二CSV列的值的文件,假設沒有引號的字段等
非常感謝你的迴應,我正在使用文件的第二列。我會嘗試你的perl腳本 – user2498657
只要注意到我錯過了打開命令上的「>>」。只會得到沒有的最後一行。 – PaulProgrammer
完美謝謝你 – user2498657