mesclando linhas com o primeiro e segundo valor de coluna correspondentes

0

Oi eu tenho arquivo com dados e eu estou olhando para alcançá-lo por awk, por favor me ajude se alguém tiver alguma idéia, obrigado antecipadamente

111,10.1.1.1,,20
111,10.1.1.1,21,
112,10.1.1.2,10,
112,10.1.1.2,,15

saída esperada:

111,10.1.1.1,21,20
112,10.1.1.2,10,15
    
por veda sol85 23.02.2018 / 08:22

1 resposta

1

Tente:

$ awk -F',+' '{a[$1","$2]=a[$1","$2]","$3} END{for (ip in a)print ip a[ip]}' file | sort
111,10.1.1.1,20,21
112,10.1.1.2,10,15

Como funciona

  • -F',+'

    Isso diz ao awk para usar qualquer sequência de uma ou mais vírgulas como um separador de campo.

  • a[$1","$2]=a[$1","$2]","$3

    Para cada linha, adicionamos o terceiro campo a uma entrada na matriz associativa a sob a chave dos dois primeiros campos.

  • END{for (ip in a)print ip a[ip]}

    Depois de chegarmos ao final do arquivo, imprimimos cada chave da matriz a , seguida do valor de a para essa chave.

  • sort

    Este passo opcional classifica a saída. Se a classificação for importante para você, provavelmente você desejará ajustar as opções para sort para obter o que deseja (por exemplo, léxico versus numérico).

por 23.02.2018 / 08:40