Todos os métodos para criar este resultado serão dispendiosos. Essa abordagem, no entanto, funcionará mesmo se o arquivo for muito maior que a RAM:
$ while read n; do awk -v n="$n" '$1!=n{print n "," $1}' file; done <file
123212,234234
123212,12324
123212,1243223
123212,5453443
234234,123212
234234,12324
234234,1243223
234234,5453443
12324,123212
12324,234234
12324,1243223
12324,5453443
1243223,123212
1243223,234234
1243223,12324
1243223,5453443
5453443,123212
5453443,234234
5453443,12324
5453443,1243223
Escrito em várias linhas
while read n
do
awk -v n="$n" '$1!=n{print n "," $1}' file
done <file
read n
lê números de file
, um de cada vez. Para cada n
, o script awk é executado para criar essa parte da saída para a qual n
está na primeira coluna. A opção -v n="$n"
cria uma variável awk chamada n
que tem o mesmo valor que a variável n
da shell. A condição $1!=n
seleciona as linhas em file
para as quais o número nessa linha do arquivo difere de n
. Para essas linhas, imprimimos o número n
, seguido de uma vírgula, seguido do número na linha.