2012-01-11 5 views
1

У меня есть несколько списков, как показано ниже:Найти общие линии между различными файлами/списками с помощью Баша

LIST1

chr10 NM_000141 
chr10 NM_000188 
chr10 NM_000235 
chr10 NM_000278 
chr10 NM_000281 
chr10 NM_000314 
chr10 NM_000375 
chr10 NM_000392 
chr10 NM_000399 
chr10 NM_000417 

list2

chr10 NM_000235 
chr10 NM_000278 
chr10 NM_000281 
chr10 NM_000314 
chr10 NM_000392 
chr10 NM_000399 
chr10 NM_000609 
chr10 NM_000681 
chr10 NM_000684 
chr10 NM_000698 

List3

chr10 NM_000235 
chr10 NM_000188 
chr10 NM_000278 
chr10 NM_000314 
chr10 NM_000399 
chr10 NM_000609 
chr10 NM_000684 
chr10 NM_000818 
chr10 NM_000872 
chr10 NM_000917 

Мой вопрос в том, как найти общие линии y все 3 списка с использованием bash? (Как здесь легко заметить, что chr10 NM_000235 это разделяют все три) ТНХ

ответ

1

использовать команду комм

$ comm /path/to/file1/ /path/to/file2 
$ comm -1 /path/to/file1/ /path/to/file2 
$ comm -2 /path/to/file1/ /path/to/file2 
$ comm -3 /path/to/file1/ /path/to/file2 

где

-1 : suppress lines unique to FILE1 
-2 : suppress lines unique to FILE2 
-3 : suppress lines that appear in both files 

сравнить два файла, первый и сохранить результат в «темп». (если «temp» пуст, тогда нет необходимости сравнивать с третьим файлом). Затем сравните temp с третьим файлом.

Я также предоставляю ссылку на короткий учебник here.