从文件中删除特定的行块

时间:2013-12-16 02:36:29

标签: bash shell

我有这个结构的文件

>ID1
ID1info-----------
------------------
------------------

>ID2
ID1info-----------
------------------
------------------
------------------
------------------
>ID3
ID1info-----------
------------------
------------------
------------------
....

我有另一个这样的文件

ID1
ID4
..

现在我要做的是从文件1中删除那些与文件2中的ID相匹配的ID。因此,对于例如文件1,我想要删除

>ID1
ID1info-----------
------------------
------------------

我怎样才能以有效的方式做到这一点。我有一种天真的方式,需要几天时间。

我的文件1有285,000个ID,文件2有47,000个ID

1 个答案:

答案 0 :(得分:1)

awk 'NR==FNR{a[">"$0]}/^>/{p=!($0 in a)}p' file2 file1