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
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?
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
Tags merge text-processing join