X 열에 나타나는 고유 값을 얻으려면 Y 열에 나타나는 마지막 값을 가져옵니다.

X 열에 나타나는 고유 값을 얻으려면 Y 열에 나타나는 마지막 값을 가져옵니다.

제목이 헷갈리지 않았으면 좋겠습니다. 일반 소매업체, 거래 및 각 거래 후 잔액에 대한 정보가 포함된 일일 보고서 파일이 있습니다. 예:

  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)은 거래에 따라 계속 변경됩니다. 각 소매업체(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

관련 정보