
タイトルが混乱を招かないように願っています。私は、常連の小売業者、その取引、および各取引後の残高に関する情報を含む日次レポート ファイルを持っています。例:
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;
小売業者は複数の取引を行っている可能性があり、その残高(小売業者の新規残高)は取引の数に応じて変化し続けます。シェル スクリプトを使用してレポートを生成し、各小売業者の最新の残高(小売業者の新規残高)を印刷する必要があります。このサンプル レポートでは、ret1 が 2 回(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