Сравнение столбца одного файла со строкой другого файла - PullRequest
1 голос
/ 05 марта 2020

У меня есть данные из 314 файлов (такие имена, как file1 fil2 file3 ......). Каждый файл имеет два столбца и разные строки.

Пример входного файла1

a 19
b 9
c 8
i 7
g 6
d 5

Пример входного файла2

a 19
i 7
g 6
d 5

У меня есть другой файл (data.txt), имеющий 314 строк и каждая строка имеет разное количество столбцов

a d c g
a i
a d
d c

Я хочу сравнить Столбец 1 файла1 с 1-й строкой файла data.txt и, аналогично, Столбец 1 файла2 со 2-й строкой файла data.txt. , и так до столбца 1 файла 314 с 314-й строкой файла data.txt.

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

Я в состоянии сделать это только с отдельными-отдельными файлами. Как это сделать, я одна команда.

Ожидаемый результат

                         Matched   Mismatched     
Ist_file_1st row        4          2
2nd_file_2nd row        2          2
.
.
314_file_314th row      -          -

1 Ответ

3 голосов
/ 05 марта 2020

Самый простой способ заключается в следующем:

awk '(FNR==NR){$1=$1; a[FNR]=OFS $0 OFS; next}
     f && (FNR==1) { print f,m,nr-m }
     (FNR==1){f++; nr=m=0}
     {nr++; if(a[f] ~ OFS $1 OFS) m++ }
     END { print f,m,nr-m }' data.txt f1.txt f2.txt ... f314.txt

Для data.txt, f1.txt и f2.txt, упомянутых в OP, выдается следующий вывод:

1 4 2
2 2 2

Первый столбец представляет номер файла / строку, второй столбец представляет общее количество совпадений, а третий - общее количество совпадений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...