awk 精确变量匹配,打印剩余行

awk exact variable match, print remaining lines

我有两个文件,如果 FILE2 的 column2 数据(/usr, /opt/var) 在 FILE1 的 column2 中可用,则打印 FILE1 的剩余行。

行顺序会有所不同,列内容也会因服务器而异。

文件 1

JUDI /usr 94  
JUDI /var 78  
JUDI /usr/openv 80  
JUDI /opt 85  
JUDI /opt/var 75  

文件 2

JUDI /usr 93  
JUDI /opt/var 70  

输出为

JUDI /var 78  
JUDI /usr/openv 80  
JUDI /opt 85 

我试过这段代码:

A=`awk '{print }' FILE2`
for i in $A
do
x=$i
nawk ' !~ /^"'$\x'"/  {print [=13=]}' FILE1
done
$ awk 'NR==FNR{a[]++} !( in a)' file2 file1
JUDI /var 78
JUDI /usr/openv 80
JUDI /opt 85

已在 FreeBSD 中测试,但应该适用于几乎所有 awk 实现。

这里的想法是,您单步执行第一个文件,以第二个字段作为键填充一个数组,然后单步执行第二个文件,仅打印第二个字段不是数组中键的行。