↓こんなcsvがあった時、
a,1,あ
b,2,い
c,3,う
↓こんな感じで列単位で垂直に連結したい時があった。
a
b
c
1
2
3
あ
い
う
その方法を調べても出てこなかったので、下記のように実現した。
# 使い方は $ concat_csv_columns_vertically /path/to/your/csvfile
concat_csv_columns_vertically () {
for i in `seq 1 $(awk -F, '{ print NF; exit }' $1)`;
do cut -d, -f$i $1;
done
}
処理の内容としては、csvの列数を取得した上でcutコマンドで列を左から順に抽出しているだけ。
これの1行版は↓
$ csvfile=/path/to/your/csvfile && for i in `seq 1 $(awk -F, '{ print NF; exit }' ${csvfile})`; do cut -d, -f$i $csvfile; done