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.
Tags awk