使用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”
等