Combinando todos os valores de duas colunas no arquivo

3

Eu tenho um arquivo com (com apenas uma linha) com várias colunas, digamos 4 (neste caso):

A B C D

E eu quero a saída como toda combinação possível de valores de coluna levando 2 de cada vez, como:

AB 
AC
AD
BC
BD
CD

em que AB e BA são equivalentes. Eu tentei o código: sed 's! \([^ ]\+\)\( \|$\)! !g' <file_name> , mas dá a saída como AB CD .

Por favor, sugira como fazer isso usando awk ou qualquer comando shell.

    
por Anshul Arora 08.04.2016 / 10:29

1 resposta

4

com awk :

awk '{for(i=1;i<=NF;i++){for(j=i+1;j<=NF;j++){print $i$j;}}}' file

São dois loops for aninhados:

  • for(i=1;i<=NF;i++) loop por todos os campos
    • for(j=i+1;j<=NF;j++) , em seguida, para cada campo, loop por todos os campos restantes (inicie em i+1 )
    • print $i$j imprime os dois valores de campo.

A saída:

AB
AC
AD
BC
BD
CD
    
por 08.04.2016 / 10:49