次のファイルがあります。
column1 column2 column3 column4 column5
5e-05 1e-05 0.00083 4e-05 0.00021
6e-05 3e-05 1.00083 2e-05 1.00021
このように印刷して出力するには、再フォーマットする必要があります。
column1 5e-05 6e-05
column2 1e-05 3e-05
column3 0.00083 1.00083
column4 4e-05 2e-05
column5 0.00021 1.00021
使ってみよう
tr ' ' '\n' |
pr -3t
しかし、これまで成功しませんでした。
解決策が見つかりました。
awk '
{
for (i=1; i<=NF; i++) {
a[NR,i] = $i
}
}
NF>p { p = NF }
END {
for(j=1; j<=p; j++) {
str=a[1,j]
for(i=2; i<=NR; i++){
str=str" "a[i,j];
}
print str
}
}' file
ただし、出力は次のようになります。
column1 5e-05 5e-05
column2 1e-05 1e-05
column3 0.00083 0.00083
column4 4e-05 4e-05
column5 0.00021 0.00021
出力番号の形式を指定したいと思います。
答え1
質問に対する2つの答えが見つかりました。
最初は@steeldriverが提案したものです。
tr -s ' ' '\n' < file | pr -3t
2つ目は、行列要素の転置に関する別の議論にあります。
awk '
{
for (i=1; i<=NF; i++) {
a[NR,i] = $i
}
}
NF>p { p = NF }
END {
for(j=1; j<=p; j++) {
str=a[1,j]
for(i=2; i<=NR; i++){
str=str" "a[i,j];
}
print str
}
}' file