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

时间:2015-11-14 15:41:24

标签: awk nawk

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

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

FILE1

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

FILE2

JUDI /usr 93  
JUDI /opt/var 70  

输出为

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

我试过这段代码:

A=`awk '{print $2}' FILE2`
for i in $A
do
x=$i
nawk '$2 !~ /^"'\$\x'"/  {print $0}' FILE1
done

1 个答案:

答案 0 :(得分:3)

$ awk 'NR==FNR{a[$2]++} !($2 in a)' file2 file1
JUDI /var 78
JUDI /usr/openv 80
JUDI /opt 85

在FreeBSD中测试过,但是几乎每个awk实现都可以使用。

这里的想法是你逐步浏览第一个文件,用第二个字段作为键填充数组,然后单步执行第二个文件,只打印第二个字段不是数组中键的行。