need to rearrange and sum column in solaris command

前端 未结 3 1933
悲哀的现实
悲哀的现实 2021-01-15 00:16

I have below data named atp.csv file

Date_Time,M_ID,N_ID,Status,Desc,AMount,Type
2015-01-05 00:00:00 076,1941321748,BD9010423590206,200,Transaction Successfu         


        
相关标签:
3条回答
  • 2021-01-15 00:31

    All in (g)awk

    awk -F, 'NR>1{a[$4]++;b[$4]+=$6}
             END{n=asorti(a,c);for(i=1;i<=n;i++)print c[i]","a[c[i]]","b[c[i]]}' file
    
    0 讨论(0)
  • 2021-01-15 00:35

    You can try this awk version also

    awk -F',' '{print $4,",", a[$4]+=$6}' FileName  | sort -r  | uniq -cw 6 | sort -r
    

    Output :

      3 200 , 4500
      1 351 , 5000
    

    Another Way:

    awk -F',' '{print $4,",", a[$4]+=$6}' FileName  | sort -r | uniq -cw 6 |sort -r |  sed 's/\([^ ]\+\).\([^ ]\+\).../\2,\1,/'
    
    0 讨论(0)
  • 2021-01-15 00:49

    AWK has associative arrays.

    % cat atp.csv | awk -F, 'NR>1 {n[$4]+=1;s[$4]+=$6;} END {for (k in n) { print k "," n[k] "," s[k]; }}' | sort
    200,3,4500
    351,1,5000
    

    In the above:

    1. The first line (record) is skipped with NR>1.

    2. n[k] is the number of occurrences of key k (so we add 1), and s[k] is the running sum values in field 6 (so we add $6).

    3. Finally, after all records are processed (END), you can iterate over associated arrays by key (for (k in n) { ... }) and print the keys and values in arrays n and s associated with the key.

    0 讨论(0)
提交回复
热议问题