Извлечение данных при перекрестной ссылке на два столбца из разных файлов и для каждого значения выведите новый файл - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть два файла, и я хочу использовать шаблон из файла 2 для извлечения данных, когда он точно соответствует шаблонам из столбца 3 или 7 в файле 1. Например, я хочу извлечь все строки из файла 1, который имеет значение«5» в столбце 3 или 7. Кроме того, я хотел бы, чтобы данные для каждого значения в файле 2 можно было распечатать в свой новый файл.Все столбцы разделены табуляцией.

Файл 1

... ... RNAME ... ... ... RNEXT
  x   x    3    x   x   x    128
  x   x   102   x   x   x     5
  x   x    2    x   x   x     =
  x   x    5    x   x   x     =
  x   x    72   x   x   x     7
  x   x    5    x   x   x    251`

Файл 2

 5
 72
 1040
 251
...

Я использовал awk '($3 == "5" || $7 == "5")' File 1, чтобы сделать это вручную для определенных значений файла 2.

Файл 3 (что я хотел бы для всех значений файла 2 как отдельных файлов)

... ... RNAME ... ... ... RNEXT
  x   x    5    x   x   x     =
  x   x   102   x   x   x     5
  x   x    5    x   x   x     =
  x   x    5    x   x   x   1040
  x   x    138  x   x   x     5
  x   x    5    x   x   x    251

Для контекста мой файл 1 представляет собой отображение данных последовательности (формат .sam) с около 250 миллионами отображенных операций чтения (строки), а файл 2 представляет интересующие контиги.Любая помощь будет высоко ценится, спасибо.

1 Ответ

0 голосов
/ 21 февраля 2019

Поскольку у вас нет тонны возможных значений для проверки, это довольно легко сделать в awk (слишком большое количество строк в file2 приведет к исчерпанию доступных файловых дескрипторов при записи строк в соответствующий файл (ы).), но 160 должно быть хорошо):

$ awk 'NR == FNR { contig[$1] = 1;
                   print "...\t...\tRNAME\t...\t...\t...\tRNEXT" > "contig" $1;
                   next }
       $3 in contig { print > "contig" $3 }
       $7 in contig { print > "contig" $7 }' file2 file1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...