我想在我的脚本中添加2个不同文件的第一列之间的比较。当第一个文件(第1列)的元素与第二个文件(第一列)的元素相同时,我想向新文件写入第二个文件的相同元素之前的元素。在此示例中,年份1789
和2007
应位于输出中。
第一个文件
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
答案 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