可以使用AWK来比较两个文件并进行算术运算。下面是一个示例代码,假设我们有两个文件file1.txt和file2.txt,它们的内容如下:
file1.txt:
John 80
Alice 75
Bob 90
file2.txt:
John 85
Alice 70
Bob 95
我们想要比较匹配项的第二个字段,并进行算术运算。比如,我们想要计算file2.txt中的每个数值减去file1.txt中对应行的数值。下面是代码示例:
awk 'NR==FNR{a[$1]=$2; next} ($1 in a) {print $1, $2-a[$1]}' file1.txt file2.txt
输出结果如下:
John 5
Alice -5
Bob 5
代码解释:
NR==FNR:这是AWK中的内建变量,表示当前处理的行数等于当前文件的行数。在这里,我们使用它来判断是否在第一个文件中。a[$1]=$2:将第一个文件中的第一个字段作为数组a的键,将第二个字段作为对应键的值。next:跳过剩余的代码,处理下一行。($1 in a):判断第二个文件中的第一个字段是否在数组a中。print $1, $2-a[$1]:打印第一个字段和第二个字段减去对应的数组a中的值。这样,我们就可以比较两个文件的匹配项,并进行算术运算。
下一篇:Awk,对于大数值没有理解正确