我有2个制表符分隔的文件,如以下2个示例所示:
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
列,我想隔离第一个文件中第二个文件中不存在的行。这是预期的输出:
expected output
:
chr10 103912167 103917248 NOLC1 ENST00000603742.1
我正在AWK
中使用以下命令进行操作:
awk 'NR==FNR{a[$4]!=$4;next}a[$4]' file1 file2 > results.txt
但是它不返回我想要的。您知道如何修复该命令吗?
答案 0 :(得分:2)
awk 'NR==FNR{a[$4]=1;next}!a[$4]' file2 file1
#=> chr10 103912167 103917248 NOLC1 ENST00000603742.1
由于要基于文件2从文件1输出内容,因此应首先读取文件2。
请注意,如果file2为空,则应更改为其他文件检查方法,例如ARGIND==1
(用于GNU awk)或FILENAME=="file2"
等。