注文のすべてのCSVを1つのCSVにマージする方法

注文のすべてのCSVを1つのCSVにマージする方法

フォルダには多くのCSVがあります。順番に組み合わせたいです。

私のCSVファイルは

state_1_result_6.csv,
state_1_result_8.csv,
state_1_result_10.csv,
state_1_result_12.csv.....

各csvにはヘッダーなしで1行があるため、aの内容はstate_i_result.csv次のようになります。

1,2,3,69,19,1,2,6,10,12,30,28

最初の行はstate_1_result_6.csv、2番目の行はstate_1_result_8.csvなどの順序で結合したいと思います。

私は前に試しました

cat state*.csv > final.csv

しかし、順番にマージされません。

答え1

これでわかったので、インデックスリストを繰り返してみてください。

for i in 6 8 10 12;
do
   cat state_1_result_${i}.csv >> final.csv
done

Cループを使用することもできます。

for ((i=6; i<=12; i+=2))

答え2

ファイル拡張子の直前にインデックスがあるので、良いです。

cat state*.csv > final.csv

ASCII文字でソートすることを検討してください。つまり、ソートされた{6、8、10、12}は{10、12、6、8}になります。

マニュアルページからエルエス、バージョン番号でソートする -v オプションがあります。これがまさに必要なものです。だからあなたは使用することができます

cat `ls -v | grep .csv` > final.csv

これがディレクトリ内の唯一のcsvファイルの場合。

答え3

またはもっと簡単に

ls -v *.csv | xargs cat >> final.csv

-v バージョン番号でソート

関連情報