GNU/Linux >> Linux の 問題 >  >> Linux

指定された行数ごとにCSVファイルを分割する方法は?

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 ファイル部分_


Linux
  1. Linuxで開くファイルの数の制限を増やす方法

  2. LinuxでファイルをUTF-8エンコーディングに変換する方法

  3. BashでCSVファイルを解析するには?

  1. Linuxでコマンドラインからファイルを分割して結合する方法

  2. 行に基づいて単一のファイルを複数のファイルに分割する方法

  3. 指定された行数で/dev/ urandomからのストリームでファイルを埋める方法は?

  1. メールボックスをメッセージごとに 1 つのファイルに分割する方法は?

  2. 1 つのテキスト ファイルを複数の *.txt ファイルに分割する方法は?

  3. 2 つの CSV ファイルを結合するには?