A abordagem mais simples seria grep
de cada um dos padrões e depois contados:
$ grep -Fwf file1 file2 | sort | uniq -c
3 Fatty_acid_degradation
As opções grep
são -f
para fornecer um arquivo como uma lista de padrões para pesquisar, -F
para especificar que o padrão deve ser tratado como uma string e não como uma expressão regular e -w
para garantir que o padrão é correspondido apenas contra palavras inteiras (para que regulation_of_expression
não seja correspondido com upregulation_of_excpression
, por exemplo).
Em seguida, você pode usar qualquer ferramenta que preferir para alterar o formato:
$ grep -Fwf file1 file2 | sort | uniq -c | sed -r 's/.*([0-9]+) *(.*)/\t/'
$ grep -Fwf file1 file2 | sort | uniq -c | perl -lane 'print "$F[1]\t$F[0]"'
$ grep -Fwf file1 file2 | sort | uniq -c | awk -vOFS="\t" '{print $2,$1}'
Todos os itens acima retornam
Fatty_acid_degradation 3