将每个 4 列的文件合并为每列 4 个文件

将每个 4 列的文件合并为每列 4 个文件

所以我有一堆文本文件,如下所示:

T1
r1 abcd
r2 defg
...

T2
r1 hijk
r2 lmno
...

我想按以下格式制作四个不同的文本文件:

__ T1 T2 ...
r1 ah ...
r2 dl ...

__ T1 T2 ...
r1 bi ...
r2 em ...

基本上,我有一定数量的文件。每个选择一个温度,然后运行磁场(T1...温度;r1、r2、..磁场),然后 a、b、c、d 等是 4 个不同的计算,每一列都是自己的。我希望能够将每个 T (文件)的第一列编译到一个文件中,以便我可以将其复制到 Excel 中,然后将每个 T 的第二列编译到不同的文件中并执行相同的操作。如果有人告诉我如何放入数据,使其格式与我的文件完全相同,我可以详细说明我的问题......

答案1

我假设 T1、T2 是四个输入文件的名称:

使用 awk:

awk 'FNR==1 { header = header " " FILENAME;
              next # we want to skip the first line
            }
            { rows[$1]; for(i=2;i<=NF;i++) A[$1,i] = A[$1,i] " " $i }
        END { for(i=2;i<=5;i++) {
                printf("__%s\n", header);
                for(j in rows) printf("%s%s\n", j, A[j,i]);
              }
            }' T1 T2 T3 T4 

这只会创建一个输出文件,其中包含所有所需的表。如果您想将其拆分为四个文件,则需要做更多工作。

如果您想从第一行提取标题行而不是输入文件的名称,请替换FILENAME$0.

相关内容