使用awk语言比较两个文件

使用awk语言比较两个文件

我有两个文件,名为 file1 和 file2。我想将第一个文件的 NR 与 file2 的第一个字段(即 $1)进行比较。像这样:if(file1.NR==file2.$1){然后做一些计算}。如果有人可以的话请帮助我。

文件1

t 0.00031
r 0.000558677
r 0.000558884
r 0.000559019
t 0.000649164
r 0.000897651
r 0.000897716
t 0.000987716
............
............

等等。 File1 中的总行数(即 NR)为 579。

文件2

9 0.00031
17 0.000649164
27 0.000987716
37 0.00129372
47 0.00163994
6 0.00194716
66 0.00227338
.............
.............

等等。 File2 中的总行数(即 NR)为 82。

答案1

您基本上是在尝试使用第二个文件作为索引。您可以先过滤文件,仅保留所需的行,然后逐行处理结果。

构建要处理的 awk 行号数组可能更容易。

awk 'NR==FNR { array[FNR] = $1 }
NR!=FNR { file1_lines[FNR] = $0 }
END { for(linenum in array) { print file1_lines[array[linenum]] } }' file2 file1

您可以将其重定向到另一个文件,然后处理整个文件而不进行过滤。

相关内容