在awk中合并相似的文件

在awk中合并相似的文件,awk,merge,Awk,Merge,我有以下文件 归档 文件B 文件C,文件D。。。所有这些文件的格式都完全相同。此外,每个文件的文件名如下:run,run%1,run%2,run%3,run%4等。文件号甚至可以达到30,也就是说,run%30 我想做的是以以下方式合并文件 Kmax Event File - Text Format 1 6 1000 1 4143 9256 13645 16426 20490 49 4144 8820 14751 16529 20505 45 4146 8308 12303 16912 2

我有以下文件

归档

文件B

文件C,文件D。。。所有这些文件的格式都完全相同。此外,每个文件的文件名如下:
run
run%1
run%2
run%3
run%4
等。文件号甚至可以达到30,也就是说,
run%30

我想做的是以以下方式合并文件

Kmax Event File - Text Format
1 6 1000 
1 4143 9256 13645 16426 20490 
49 4144 8820 14751 16529 20505 
45 4146 8308 12303 16912 22715 
75 4139 9049 14408 16447 20480 
23 4137 8449 13223 16511 20498 
22 4142 8795 14955 16615 2049
42 4143 9203 13401 16475 20480 
44 4140 8251 12302 16932 21872 
849 6283 8455 12301 16415 20673 
18 4148 8238 12757 16597 20484 
19 4144 8268 12306 17110 21868 
50 4134 8331 12663 16501 20606 
988 5682 8296 12306 16577 20592 
61 4147 8330 12307 16945 22497 
0 4138 8333 12310 16871 22749
我相信我可以用电脑来做

awk '{i=$1;sub(i,x);A[i]=A[i]$0} FILENAME==ARGV[ARGC-1]{print i A[i]}'

但这样,第二个文件的前两行就出现了。另外,我不知道上面这句话是否行得通。问题是我需要同时合并多个文件。有没有合并这些几乎相同的文件的想法?

您可以使用
cat
tail

cat A>C&&tail-n+3B>>C

这将把文件A和B合并到一个名为C的新文件中。 使用
awk

awk 'FNR==NR{print; next} FNR>2' A B > C
如果有多个文件要合并为一个文件,则可以在awk版本中将它们列在
ab
旁边,例如
ab
C是包含合并数据的输出文件

cat
tail
版本中,您可以对其他文件重复
tail
部分代码,例如

cat A > C && tail -n +3 B >> C && tail -n +3 D >> C

或者创建某种循环来迭代文件

打印第一个文件(NR==FNR)中的所有行,仅打印其余文件(FNR>2)中的第3行和第3行:


在shell中使用分组大括号

{ cat run; sed '1,2d' run%*; } > c

你说的合并是指合并吗?如果不是,请解释合并条件。
cat A > C && tail -n +3 B >> C && tail -n +3 D >> C
awk 'NR==FNR||FNR>2' run*
{ cat run; sed '1,2d' run%*; } > c