所以我有一堆文本文件,如下所示:
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
.