从2个文件中提取数据

从2个文件中提取数据

我有两个文件,第一个文件仅包含 1 个字段,第二个文件比第一个文件有更多行,并且每行都有不同的字段。

文件一:

5
15
20

文件2:

3
5
O  1.25  2.30  3.75 
H  1.55  2.45  3.80
H  1.65  2.50  3.90
3
10
O  1.49  2.90  3.52
H  1.89  2.08  3.05
H  1.90  2.18  3.28
3
15
O  1.09  2.29  3.10
H  1.30  2.49  3.69
H  1.54  2.05  3.01
3
20
O  1.91  2.31  3.98 
H  1.64  2.96  3.04
H  1.07  2.49  3.49

在文件 2 中,存在周期性循环,第一行是数字 3,然后第二行显示数字,如 5,10,15,20, ... 以及包含 4 个字段的 3 行。

我想比较两个文件并在它们具有相同编号时保存数据,例如在文件1中,第一个字段是5,我只需要打印文件2中的数据!

对应于文件 1 作为输入和文件 2 我需要提取数据,我希望输出如下:

3
5
O  1.25  2.30  3.75
H  1.55  2.45  3.80
H  1.65  2.50  3.90
3
15
O  1.09  2.29  3.10
H  1.30  2.49  3.69
H  1.54  2.05  3.01
3
20
O  1.91  2.31  3.98 
H  1.64  2.96  3.04
H  1.07  2.49  3.49

我怎样才能有这样的输出?当 FNR==NR 时,打印前一个字段以及 FNR==NR,然后打印接下来的三个字段。因为它们彼此相关,我想要拥有它们。非常感谢,莱拉

答案1

你可以这样做awk

awk 'FNR==NR{
     a[$1];next
}
(FNR%10==3 && $1 in a){
     nr=FNR+9
}
(FNR<=nr || nr==""){
     print
}' file1 file2

这里我假设每一行后面有一个空行。

相关内容