Há mais de uma maneira de fazer isso; aqui está comm
.
Primeiro printf
a um cabeçalho para interpretar a saída de comm
- fornecendo os nomes de arquivos solicitados - e execute comm
na entrada classificada, suprimindo as linhas existentes nos dois arquivos ( -3
). As duas entradas para comm
são substituições de processos em que eu uso a sugestão tr
de don_crissti para converter espaços em File1
em novas linhas; em seguida, passe os dois arquivos por meio de sort
, que comm
requer.
printf "File1\tFile2\n"; comm -3 <(tr ' ' '\n' < File1 | sort) <(sort File2)
Execução de amostra
Arquivo de entrada1:
1 2 3 4 5 6 7 8 10 11
Arquivo de entrada 2:
1
2
3
4
5
6
7
8
9
10
Saída:
$ printf "File1\tFile2\n"; comm -3 <(sed 's/ /\n/g' File1 |sort ) <(sort File2)
File1 File2
11
9