一意の列値に基づいてCSVファイルを複数回分割する方法は?

一意の列値に基づいてCSVファイルを複数回分割する方法は?

複数の列を含むCSVファイルがあります。これが私が提唱するところの例です。サンプル入力データは次のとおりです。

9,-54,18205,28,0,1517400128,2353,0,0,0,0,551
9,-54,18207,28,0,1517400128,2354,0,0,0,0,551
10,-48,18216,28,0,1517400128,2353,0,0,0,0,551
9,-54,18217,28,0,1517400128,2356,0,0,0,0,551
13,-54,18223,28,0,1517400128,2353,0,0,0,0,551

1列の固有値に基づいてデータを分割し、7列の固有値に基づいて結果をさらに分割したいと思います。現在私は最初に列1に基づいてワークシートを分割し、ディレクトリから結果のcsvファイルを読み取り、それを出力txtファイルに保存してから、出力txtファイルから次のように値を取得します。変数を指定し、awkスクリプトを実行してファイルをさらに分割します。しかし、なんだか二次分裂は予想通りになされなかった。これまで私がしたことは次のとおりです。

awk -F\, '{print > $7".csv"}' $dir/../testfile.csv

ls -R | grep "\.csv$" > testfile.txt

while IFS= read -r a \n b \n c; do
    awk -F\, '{print > $1".csv"}' $dir/$a
    awk -F\, '{print > $1".csv"}' $dir/$b
    awk -F\, '{print > $1".csv"}' $dir/$c
done < testfile.txt

ここで問題を特定するのに役立ちます。これはシェルになければなりません。

ベストアンサー1

私はそれについて考えており、最終的に次の出力を実行するにはコマンドが必要です。

awk -F, '{print >$1"_"$7".csv"}' infile

おすすめ記事