用awk比较2个不同文件的第一列

时间:2014-09-09 15:31:39

标签: bash awk

我想在我的脚本中添加2个不同文件的第一列之间的比较。当第一个文件(第1列)的元素与第二个文件(第一列)的元素相同时,我想向新文件写入第二个文件的相同元素之前的元素。在此示例中,年份17892007应位于输出中。

第一个文件

1860
1934
1960
2001
2011

第二档

1789
1934
1980
2007
2011

我尝试了这个没有成功:

cat File1.dat File2.dat | awk '{$1=a[$1]; next} {print a[$1]-1}' > Output.dat 

2 个答案:

答案 0 :(得分:2)

使用awk

$ awk 'NR==FNR{a[FNR]=$1; next}$1==a[FNR]{print a[FNR-1]}' file2 file1
1789
2007

使用NR==FNR构造,我们将file2的行存储在一个数组中。一旦file2存储在内存中,我们就会迭代file1。当file1中的行与file2的相应行匹配时,我们将从数组中打印上一行。

答案 1 :(得分:2)

kent$  paste f1 f2|awk '$1==$2{print p}{p=$2}'
1789
2007