用awk比较两个大文件

时间:2017-03-06 06:46:49

标签: awk compare comparison

我从以下链接中获取了比较两个文件的参考: Compare files with awk

awk 'NR==FNR{a[$1];next}$1 in a{print $2}' file1 file2

如果在file1中找到第一列file2,则打印file2的第二列。

但我的要求略有不同。如果在关联数组中找到file2的第一列(用file1的第一列构建),如何打印file1的第二列?

1 个答案:

答案 0 :(得分:1)

有了这个:

awk 'NR==FNR{a[$1]=$2;next}$1 in a{print a[$1]}' file1 file2

通过这种方式,您可以为数组a的每个数组元素分配一个值。 对于包含字段foo bar的行,您实际创建了a[foo]=bar 如果您稍后发出命令{print a[foo]},它将打印条形图(它的指定值)

上一个{a[$1];next}创建一个名为a且索引为$1的数组,但值为null;它是a[$1]="".

的分类

整个东西在awk中工作,因为awk有一种简单的方法可以使用$1 in a{print something}在数组中查找索引。这是一个awk if then快捷方式。 它与{if ($1 in a) {print something}}相同。关于这一点的好处是部分$1 in a引用数组a索引而不是数组值。