我有两个文件,如果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
答案 0 :(得分:3)
$ awk 'NR==FNR{a[$2]++} !($2 in a)' file2 file1
JUDI /var 78
JUDI /usr/openv 80
JUDI /opt 85
在FreeBSD中测试过,但是几乎每个awk实现都可以使用。
这里的想法是你逐步浏览第一个文件,用第二个字段作为键填充数组,然后单步执行第二个文件,只打印第二个字段不是数组中键的行。