我有一个非常大的文本文件,由10000行组成,如下所示:
Contig9 Pfam protein_match 57 81 1.9E-6 + . Name=PF12874;Note=Zinc-finger of C2H2 type;Target=null 57 81;status=T;ID=match$554_57_81;date=10-10-2014 Contig9 SMART protein_match 54 88 9.4E-9 + . Name=SM00451;Note=U1-like zinc finger;Target=null 54 88;status=T;ID=match$555_54_88;Ontology_term="GO:0003676"
我想从所有行中删除;ID=matchXXXXX
部分。
在unix中使用VIM awk或sed会有一个简单的方法吗?
答案 0 :(得分:2)
您可以使用:%s
命令:
:%s/ID=match.\{-};//g
这会删除所有出现的ID=match
,后跟任何字符(\{-}
以使其不贪婪),然后删除;
一无所有(删除它)。
执行后你得到
Contig9 SMART protein_match 54 88 9.4E-9 + . Name=SM00451;Note=U1-like zinc finger;Target=null 54 88;status=T;Ontology_term="GO:0003676"
而不是
Contig9 SMART protein_match 54 88 9.4E-9 + . Name=SM00451;Note=U1-like zinc finger;Target=null 54 88;status=T;ID=match$555_54_88;Ontology_term="GO:0003676"
请注意ID=match$555_54_88;
已被删除
答案 1 :(得分:2)
你可以尝试这样:
awk '{sub(";ID=match[^;]+","")}1' input_file
我希望这有帮助!
答案 2 :(得分:1)
sed -i 's/ID=match.*;//' file.txt