我有一个这样的文件:
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
我找到了所提出问题的两个答案:
第一个由@steeldriver 提出:
tr -s ' ' '\n' < file | 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