Obtenha o último valor que aparece na coluna Y, pois o valor exclusivo aparece na coluna X

Obtenha o último valor que aparece na coluna Y, pois o valor exclusivo aparece na coluna X

Espero que o título não seja confuso. Tenho um arquivo de relatório diário que contém informações sobre varejistas regulares, suas transações e saldo após cada transação. exemplo:

  TransactionDate;retailerName;retailersBalance;retailersNewBalance;TrAmount;TaxAmount
   2020-03-28 23:59:00;ret1;522305800;522300200;5040;560
   2020-03-28 18:47:04;ret2;3166007400;3165997400;9000;1000
   2020-03-28 16:43:10;ret1;522311400;522305800;5040;560;

O varejista pode ter mais de uma transação, seu saldo (varejistasNewBalance) continua mudando tanto quanto ele faz as transações. Preciso gerar um relatório usando shell script para imprimir o saldo recente (varejistasNewBalance) de cada varejista. observe que ret1 existe duas vezes neste relatório de exemplo (às 23:59:00 e às 16:43:10) e poderia me dar mais

A produção esperada deve ser a última (recente) dos varejistas New Balance. ex:

   Time    Retailers  Balance
 ================================
 23:59:00   ret1     522300200
 18:47:04   ret2     3165997400

Responder1

Se a entrada for classificada por data, com o mais recente primeiro:

awk 'BEGIN{FS=";"} FNR>1 && !nameseen[$2]++ {print $1, $2, $4}' file
  • só imprima o registro se o campo da coluna "retailerName" não tiver sido visualizado

Exemplo com alguma formatação:

awk 'BEGIN {
    FS=";"
    printf "%9s\t%-20s\t%s\n", "Time", "Retailers", "Balance"
}
FNR>1 && !nameseen[$2]++ {
    split($1,time," ")
    printf "%9s\t%-20s\t%s\n", time[2], $2, $4
}' file

informação relacionada