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
commestá lendo arquivos, enquanto éstdoutredirecionando para umfdtemporário