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