2014-10-23 4 views
-1

У меня есть очень большой текстовый файл, состоящий из 10000S линий, например, так:Удалить строку из текстового файла

 
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 из всех линий.

Будет ли простой способ сделать это с помощью VIM awk или sed в unix?

+0

Строка, подлежащая удалению, заканчивается перед следующим «;»? – TrueY

+0

Да, я хочу удалить все строки, похожие на этот формат: ID = XXXXXXXXXX – user3294511

+0

Хорошо, но до конца строки, или используйте первый ';' charater? – TrueY

ответ

2

Вы можете попробовать так:

awk '{sub(";ID=match[^;]+","")}1' input_file 

Надеюсь, это поможет!

+0

Спасибо TrueY, что сработало отлично! Очень признателен! – user3294511

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

'. *' Жадный! Итак, если есть два ';' в линии, тогда он будет зажиматься до второго ... – TrueY

+0

Спасибо Зак очень ценю! – user3294511

+0

Регулярное выражение уже не жадное благодаря '. \ {-}' вместо '. *'. Спасибо, что указали это. – Zach

1
sed -i 's/ID=match.*;//' file.txt 
+1

+1 для изменения файла inplace! Я думаю, что 'g' не нужно, но это не ясно из вопроса. . * 'жадный, поэтому он будет сожрать все до последнего символа'; '. – TrueY

+0

Да, вы правы насчет 'g', с'. * 'Жадным, я полагаюсь на то, что это последний возможный матч. –

Смежные вопросы