1. ホーム
  2. linux

[解決済み] CSVファイルを指定した行数で分割するには?

2023-02-07 22:17:37

質問

LINUXサーバーにCSVファイル(約10,000行、各行300列)が保存されています。 私はこのCSVファイルを20レコードずつ500個のCSVファイルに分割したいと思います。(それぞれは、元のCSVに存在するのと同じCSVヘッダを持つ)。

この変換を支援するlinuxコマンドはありますか?

どのように解決するのですか?

関数にしました。これで 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
}

Found on: http://edmondscommerce.github.io/linux/linux-split-file-eg-csv-and-keep-header-row.html