2013-12-16 2 views
0

У меня есть этот определенный файл со структурой, как этотУдаление конкретных блоков строк из файла

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

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

У меня есть еще один файл, как этот

ID1 
ID4 
.. 

Теперь то, что я хочу сделать, это удалить эти идентификаторы из файла 1, соответствующего файлам в файле 2. Так, например, из файла 1, я хочу удалить

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

Как это сделать является эффективным способом. У меня есть наивный способ, который потребует от меня нескольких дней.

У меня есть file1 с 285000 идентификаторами и файл 2 с 47000 идентификаторами

ответ

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

Идентификатор части не точно ID (дословный). Это строка, но может быть что угодно? – user34790

+0

Да, это может быть что угодно. Если это 'string' в file2 и'> string' в файле1, вам просто нужно отбросить 'ID' в регулярном выражении. – Kevin

+0

На самом деле, у меня есть еще одна проблема. Не могли бы вы помочь - http://stackoverflow.com/questions/20603019/removing-duplicate-blocks-of-lines-from-a-file. Ваши предложения действительно помогают мне и экономят дни работы (Y). – user34790

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