com awk
:
awk 'NR==FNR {a[$0]; next}; {if ($1 in a) next}; 1' f1.txt f2.txt
Insira o arquivo com apenas uma única coluna como o primeiro argumento e o primeiro a verificar a associação (primeira coluna) como o segundo argumento.
-
NR==FNR {a[$0]; next}
, aquiNR==FNR
só será verdadeiro para o primeiro arquivo, então salvamos cada linha no arraya
para que possamos fazer o teste de associação para o primeiro argumento do segundo arquivo, então nós estamos indo para a próxima linha sem qualquer outra operação no segundo arquivo -
{if ($1 in a) next}; 1
será executado apenas para o segundo arquivo, o que deve ser verificado, aqui estamos verificando se o primeiro espaço separado em branco está no arraya
, se estiver presente, indo para a próxima linha, caso contrário imprimindo a linha inteira.
Exemplo:
$ cat f1.txt
NM_000031
NM_000032
NM_000033
NM_000034
NM_000022
NM_000035
NM_000036
NM_000037
NM_000023
NM_000038
NM_000039
NM_000040
NM_000041
NM_000042
$ cat f2.txt
NM_000014 3
NM_000015 0
NM_000016 0
NM_000017 0
NM_000018 0
NM_000019 28
NM_000020 0
NM_000021 0
NM_000022 0
NM_000023 0
NM_000024 8
NM_000025 0
NM_000026 0
$ awk 'NR==FNR {a[$0]; next}; {if ($1 in a) next}; 1' f1.txt f2.txt
NM_000014 3
NM_000015 0
NM_000016 0
NM_000017 0
NM_000018 0
NM_000019 28
NM_000020 0
NM_000021 0
NM_000024 8
NM_000025 0
NM_000026 0