取得 Y 列中出現的最後一個值,以取得 X 列中出現的唯一值

取得 Y 列中出現的最後一個值,以取得 X 列中出現的唯一值

我希望標題不會令人困惑。例子:

  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;

零售商可能有不只一筆交易,他的餘額(retailersNewBalance)會隨著他的交易而不斷改變。我需要使用 shell 腳本產生一份報告,列印出每個零售商的最近餘額 (retailersNewBalance)。請注意,ret1 在此範例報告中存在兩次(分別在 23:59:00 和 16:43:10),我可以提供更多資訊嗎?

預期產量應該是最後(最近)零售商New Balance。前任:

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

答案1

如果輸入按日期排序,則最新的排在前面:

awk 'BEGIN{FS=";"} FNR>1 && !nameseen[$2]++ {print $1, $2, $4}' file
  • 僅當未看到「retailerName」欄位中的欄位時才列印記錄

帶有一些格式的範例:

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

相關內容