1.csv
1,2,3
1,2
1,2,3,4,5
上記ファイルのような要素数が不定の csv データを転地して以下のようにする。
1,1,1
2,2,2 # ←は見やすくしたバージョン。本当は以下のように潰れる.
3, ,3 # 3,,3
, ,4 # ,,4
, ,5 # ,,5
Excel でするには行数/フィールド数が多すぎたので。
csv といいつつ、,
は スペースに置換してから使ったので、comma-separated じゃないけど、なんていうのが正しいのかな?
#! /usr/bin/gawk -f
# transposed_matrix.awk
BEGIN {
#BEGIN ブロック追加.
n = 0;
# ねんのためだったけど、awk の世界は 1 始まりなので
# 余計なことをした気がしないでもない
}
{
n = n < NF ? NF : n; # この行、追加
for (i = 1; i <= NF; i++) {
val[i, NR] = $i;
}
}
END {
#for (i = 1; i <= NF; i++) {} # NF が最後の行のフィールド数になっているので記録した最大レコード数を使用する.
for (i = 1; i <= n; i++) {
for (j = 1; j <= NR; j++) {
printf("%s,", val[i, j]);
}
print "";
}
}