Linux 分割コマンドを使用します:
split -l 20 file.txt new
ファイル「file.txt」を「new」という名前で始まるファイルに分割し、それぞれに 20 行のテキストが含まれます。
man split
と入力します 詳細については、Unix プロンプトを参照してください。ただし、最初に file.txt からヘッダーを削除する必要があります (tail
を使用) コマンドなど)、それを各分割ファイルに追加し直します。
関数にしました。 splitCsv <Filename> [chunkSize]
を呼び出すことができるようになりました
splitCsv() {
HEADER=$(head -1 $1)
if [ -n "$2" ]; then
CHUNK=$2
else
CHUNK=1000
fi
tail -n +2 $1 | split -l $CHUNK - $1_split_
for i in $1_split_*; do
sed -i -e "1i$HEADER" "$i"
done
}
場所:http://edmondscommerce.github.io/linux/linux-split-file-eg-csv-and-keep-header-row.html
各分割ファイルのヘッダー行を保持するワンライナー。この例では、ファイルごとに 999 行のデータと 1 つのヘッダー行が得られます。
cat bigFile.csv | parallel --header : --pipe -N999 'cat >file_{#}.csv'
https://stackoverflow.com/a/53062251/401226 正しいバージョンのパラレルのインストールに関するコメントが回答に含まれています (ubuntu では、moreutils にバンドルされているものよりも新しい特定のパラレル パッケージを使用します)
これでうまくいくはずです!!!
file_name
=分割するファイルの名前。
10000
=各分割ファイルに含まれる行数
file_part_
=分割ファイル名のプレフィックス (file_part_0、file_part_1、file_part_2..etc が続きます)
分割 -d -l 10000 ファイル名.csv ファイル部分_