我有2个文件,例如:
文件1:
1 azer 4
2 toto 0
3 blabla 8
4 riri 9
5 coco 2
文件2:
1 azer 4
2 toto 0
3 blabla 8
我想比较两个文件,如果文件2中的行在文件1中,我想从文件中删除这些行1.例如:
输出:
4 riri 9
5 coco 2
我试过这个命令,但它只显示了相似之处:
awk 'NR==FNR{a[$2];next} $1 in a {print $0}' merge genotype.txt
有人知道怎么做吗?我在awk中试过但是如果可以在R或python中做到这一点也很好。
答案 0 :(得分:1)
首先,将文件2行读作class
,因此测试速度更快。然后迭代文件1的行并使用生成器理解来编写输出文件行。
set
答案 1 :(得分:1)
grep
-
$cat file1
1 azer 4
2 toto 0
3 blabla 8
4 riri 9
5 coco 2
$cat file2
1 azer 4
2 toto 0
3 blabla 8
尝试 -
grep -vf file2 file1
输出 -
4 riri 9
5 coco 2
答案 2 :(得分:0)
# awk
awk 'FNR==NR{a[$0];next}!($0 in a)' file2 file1
# comm
comm -23 file1 file2
# grep
grep -Fvxf file2 file1
<强>输入强>
$ cat file1
1 azer 4
2 toto 0
3 blabla 8
4 riri 9
5 coco 2
$ cat file2
1 azer 4
2 toto 0
3 blabla 8
<强>输出强>
$ awk 'FNR==NR{a[$0];next}!($0 in a)' file2 file1
4 riri 9
5 coco 2
$ comm -23 file1 file2
4 riri 9
5 coco 2
$ grep -Fvxf file2 file1
4 riri 9
5 coco 2