首页 > 解决方案 > 从bash程序中不同文件的“awk”命令生成表?

问题描述

我需要制作一个数字表,这些数字是从不同的文件中获得的,我的代码是

#!/bin/sh
for K in 1.7e-2; do 
    dir0=Kn_${K};
    for P in 1.4365 2.904; do
        dir1=P${P};
            for r in 0.30 0.35; do
                dir2=${r};
                awk '/result is =/{print $NF}' ./First/${dir0}/${dir1}/R\=${dir2}/Results.dat
            done;
    done;
done;
exit;

我得到

1
2
3
4

但是我需要

1   3
2   4

我正在阅读有关此主题的一些帖子,但这些主题是关于文件的,而不是关于生成数据的。

感谢您的帮助和支持

标签: bashawkdatatable

解决方案


我得到的数据是,

1
2
3
4
5
6
7
8

机智的管道 pr -4ts $ '\ t'(感谢@karakfa)

我获得了

1 3 5 7
2 4 6 8

然后用脚本转置为,

#!/bin/sh

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   
    }
}' $1

我获得了

1  2
3  4
5  6
7  8

我有穿插数字的问题,

我需要

1   5
2   6
3   7
4   8

但我不知道,命令pr及其选项有什么问题?

谢谢你的帮助


推荐阅读