MENU

Macで複数のCSVをめっちゃ簡単に結合するコマンド(cat)

たくさん集めたアンケートなどが複数ファイルに分かれているから結合したいものよ。

Windowsだとパワークエリーでなんか色々できるっぽいけど、Macはイマイチ・・!

どうしたものか。

の解決策。

目次

ターミナルからCatで結合

思ったより簡単でびっくりしました。

ターミナルというWindowsでいうコマンドプロンプトみたいなやつを開いて、フォルダを指定して、catコマンドを打つだけ。

ファイルパスはFinderで開いてフォルダの部分(下の方)を右クリックして、ターミナルを開くをすると一気に行けるので楽です。

 cat *.csv > AllData.csv

これにより、フォルダ内のすべてのcsvのデータがAlldata.csvに入る。

(ただこのままだと、1行目とかもそのまま入ってしまうのと、どのファイルが何番目にきてるのかなどがわからない)

ここを参考にしました。

https://note.com/digiholic_life/n/n98f744d65f87

もうちょい変換したらめっちゃ便利にできそう。(今日はここで終わり。いずれ追記する。)

1行目をなくして結合する技

できました。

ファイルを昇順で並び替え

並び替え

ls -1 *.csv | sort

1行目をtougouへ

head -n 1 “$(ls -1 *.csv | sort -n | head -n 1)” > tougou.csv

ヘッダー以外を結合

ls -1 *.csv | sort -n | xargs -I % sh -c ‘tail -n +2 “%” >> tougou.csv’

順にターミナルでやっていきます。

これ何をしてるかというと、1行目なしで結合しています。

ただこのときの結合順が、ファイル名の昇順でそれがMacだと文字コードの関係で謎の順番になります。

なのでその順番を知るために1行目のlsコマンドで昇順並び替え結果を出力し、人間がわかるようにしてます。

その後、2~3行目の結合のコマンドをすると、tougou.csvに結合された結果が出ます。

終わり。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次