LoginSignup
1
1

More than 5 years have passed since last update.

要素数が不定の csv データを転地

Last updated at Posted at 2016-10-04
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 "";
    }
}

出展: AWK Users JP::転置行列を作る

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1