Desprezivelmente roubado de @cherdt com algumas melhorias (assume um shell como zsh
ou bash
com suporte para ksh
- como substituição de processo):
f=filename; comm -12 <(cut -f1 < "$f" |sort) <(cut -f2 < "$f" | sort)
- Manter o nome do arquivo na variável não ajuda a repeti-lo
- Não é necessário gravar em arquivos e comparar. Escrever em arquivos geralmente requer que sejam apagados depois para limpeza. Não faça isso com arquivos enormes. A substituição do processo faz com que pareça que
comm
está lendo arquivos, enquanto éstdout
redirecionando para umfd
temporário