mescla o arquivo não ordenado ao arquivo ordenado usando o comando shell

0

Eu quero mesclar / ingressar ou produzir um novo arquivo mesclado. Ambos os arquivos contêm IDs comuns na primeira coluna.

O arquivo 1 se parece com isso

ID
Tb927.4.4670
Tb927.8.3630
Tb09.160.4310
Tb927.8.3650

O arquivo 2 contém o ID e também funciona para cada gene e se parece com isso

ID              Function 1    Other field
Tb09.211.0140     A               eg
Tb11.03.0080      B               eg
Tb927.8.6200      C               eg
Tb927.7.690       D               eg

No entanto, alguns IDs estão faltando no meu arquivo 2, pois nem todos os genes têm função conhecida, portanto os campos no meu arquivo 2 são menores do que no meu arquivo 1. Os IDs no arquivo 2 também são classificados de maneira diferente do meu arquivo 1.

Eu quero que meu arquivo mesclado siga a sequência do meu arquivo 1 com funções mescladas na saída. Para o ID ausente, ele pode estar vazio ou algo como retornar '-'.

É possível mesclar esse tipo de arquivo usando o comando linux?

    
por user3072782 04.04.2014 / 22:37

1 resposta

2

usando awk

awk 'NR == FNR{a[$1]=$0; next};
     ($1 in a){print a[$1]; next};
      {print $1, "-", "-"}' file2 file1

Ou ligeiramente terser

awk 'NR == FNR{a[$1]=$0; next};
  {print $1 in a?a[$1]:$1FS"-"FS"-"}' file2 file1
    
por 04.04.2014 / 23:20