
Espero que el título no sea confuso. Tengo un archivo de informe diario que contiene información sobre los minoristas habituales, sus transacciones y su saldo después de cada transacción. ejemplo:
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;
El minorista puede tener más de una transacción, su saldo (minoristaNewBalance) sigue cambiando tanto como realiza las transacciones. Necesito generar un informe usando un script de shell para imprimir el saldo reciente (minoristasNewBalance) de cada minorista. Observe que ret1 existe dos veces en este informe de ejemplo (a las 23:59:00 y a las 16:43:10) y ¿podría saber más?
La producción esperada debería ser la de los últimos (recientes) minoristas New Balance. ex:
Time Retailers Balance
================================
23:59:00 ret1 522300200
18:47:04 ret2 3165997400
Respuesta1
Si la entrada está ordenada por fecha, con la más reciente primero:
awk 'BEGIN{FS=";"} FNR>1 && !nameseen[$2]++ {print $1, $2, $4}' file
- Sólo imprima el registro si no se ha visto el campo de la columna "NombreRetailer"
Ejemplo con algún formato:
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