awkで複数の列を連続行に変換する方法

awkで複数の列を連続行に変換する方法

A.txtファイルがあります(sep = \t、最初の列は空です)。

    Cycle  A1  A2  B1
    1      4   5   2
    2      7   3   4
    3      3   2   5

\tこのファイルを新しいファイルB.txt(9月=)に変換したいと思います。

Well  Cycle  Value
A1     1     4
A1     2     7
A1     3     3
A2     1     5
A2     2     3
A2     3     2
B1     1     2
B1     2     4
B1     3     5

いくつか試してみましたが、awk '{for (i=1;i<=NF;i++) print $i}' わかりません。これを行う方法を知っている人はいますか?ありがとう

ベストアンサー1

いいえawk、しかし、以下を使用してください。ミラー与えられた

$ cat file
    Cycle  A1  A2  B1
    1      4   5   2
    2      7   3   4
    3      3   2   5

それから

$ mlr --pprint --ifs tab reshape -i A1,A2,B1 -o Well,Value then sort -f Well then reorder -f Well file
Well Cycle Value
A1   1     4
A1   2     7
A1   3     3
A2   1     5
A2   2     3
A2   3     2
B1   1     2
B1   2     4
B1   3     5

sort必要でない場合は、この手順を省略できます。

Millerreshapeコマンドは、フィールドの選択に正規表現を使用することもできます。

reshape -r '[A-Z][1-9]' -o Well,Value

おすすめ記事