AWK mesclar na ajuda do formato de correspondência

0

Eu tenho a seguinte string awk que está funcionando, mas preciso adicionar uma verificação adicional para evitar perda de dados. Agora ele verifica $ 5 e no jogo combina $ 17. Eu preciso adicionar um cheque de $ 12 também.

Aqui está a string do awk.

nawk -F"|" 'FNR==NR{A[$5]=A[$5]?A[$5] "," $17:$17;next} ($5 in A){$17=A[$5];print;delete A[$5]}' OFS="|"

Exemplo de dados de origem.

1|ALPHA|1|ALPHA|996|CSPAN 3|CSPN3|CSPAN 3|BROADCAST|CSPAN 3|9472|375000000|2|QAM 256|152||114
1|ALPHA|1|ALPHA|996|CSPAN 3|CSPN3|CSPAN 3|BROADCAST|CSPAN 3|9472|375000000|2|QAM 256|152||144
1|ALPHA|1|ALPHA|996|CSPAN 3|CSPN3|CSPAN 3|BROADCAST|CSPAN 3|9472|735000000|2|QAM 256|152||144
1|ALPHA|1|ALPHA|996|CSPAN 3|CSPN3|CSPAN 3|BROADCAST|CSPAN 3|9472|735000000|2|QAM 256|152||114

O que eu recebo é ....

1|ALPHA|1|ALPHA|996|CSPAN 3|CSPN3|CSPAN 3|BROADCAST|CSPAN 3|9472|375000000|2|QAM 256|152||144,114,114,144

Você pode ver que $ 12 tem 375000000 e 735000000, mas a fusão está usando apenas 375000000, então o que eu gostaria é ...

1|ALPHA|1|ALPHA|996|CSPAN 3|CSPN3|CSPAN 3|BROADCAST|CSPAN 3|9472|375000000|2|QAM 256|152||114,144
1|ALPHA|1|ALPHA|996|CSPAN 3|CSPN3|CSPAN 3|BROADCAST|CSPAN 3|9472|735000000|2|QAM 256|152||144,114

Para adicionar, pode haver linhas em que haja apenas uma entrada, nenhuma variação na coluna 12 ou 17 ou instâncias em que a mesma referência $ 5 tenha 15 entradas diferentes para diferenças em uma ou em ambas, $ 12 e ou 17.

    
por cw2 21.04.2017 / 17:32

0 respostas

Tags