使用AWK基于一列获取由2个选项卡分隔的文件组成的不常见行

使用AWK基于一列获取由2个选项卡分隔的文件组成的不常见行,awk,Awk,我有两个选项卡分隔的文件,如以下两个示例: file1: chr10 103912167 103917248 NOLC1 ENST00000603742.1 chr16 18573197 18558622 NOMO2 ENST00000543392.1 chr1 120611947 120572610 NOTCH2 ENST00000256646.2 file2: chr16 18573197 18558622 NOMO2

我有两个选项卡分隔的文件,如以下两个示例:

file1

chr10   103912167   103917248   NOLC1   ENST00000603742.1
chr16   18573197    18558622    NOMO2   ENST00000543392.1
chr1    120611947   120572610   NOTCH2  ENST00000256646.2
file2

chr16   18573197    18558622    NOMO2   ENST00000543392.1
chr1    120611947   120572610   NOTCH2  ENST00000256646.2
chr1    145209308   145248834   NOTCH2NL    ENST00000344859.3
基于
4th
列,我想隔离第一个文件中第二个文件中不存在的行。以下是预期输出:

预期输出

chr10   103912167   103917248   NOLC1   ENST00000603742.1
我在
AWK
中使用以下命令执行此操作:

awk 'NR==FNR{a[$4]!=$4;next}a[$4]' file1 file2 > results.txt
但它没有返回我想要的。你知道如何修复这个命令吗

awk 'NR==FNR{a[$4]=1;next}!a[$4]' file2 file1
#=> chr10   103912167   103917248   NOLC1   ENST00000603742.1
由于您希望基于file2从file1输出内容,所以应该首先读取file2

注意:如果file2可能为空,则应更改为不同的文件检查方法,如GNU awk的
argid==1
,或
FILENAME==“file2”

由于您希望基于file2从file1输出内容,所以应该首先读取file2

注意:如果file2可能为空,则应更改为不同的文件检查方法,如GNU awk的
argid==1
,或
FILENAME==“file2”