使用awk

时间:2016-03-22 13:22:10

标签: arrays unix awk

PFB情景

我有两个文件

档案1

val1
val2
val3 

文件2

val1
val2
val4

下面的代码会给我所有匹配的行

awk 'FNR==NR{arr[$1];next}$1 in arr{print $1,"in both files"} file1 file2

输出将是

 val1 in both files
 val2 in both files

但我想要的是

val4

如何更改代码,以便我可以获得数组arr中 NOT PRESENT的值。

1 个答案:

答案 0 :(得分:1)

使用!运算符在file2中打印值,但不在file1中打印。

awk 'FNR==NR{a[$1]++;next} !($1 in a)' file1 file2

我试过了,输出是:

$ cat file1              
val2
val3
$ cat file2               
val1
val2
val4
$ awk 'FNR==NR{a[$1]++;next} !($1 in a)' file1 file2
val4