【问题标题】:awk to list grand total of reportawk 列出报告的总计
【发布时间】:2013-11-06 16:18:14
【问题描述】:

您好,我想列出报告的总数。 试图列出总数。但不确定使用什么代码将 total salariedtotal hourly 从 awk 组合在一起

请指教

结果:

Salaried:
Frank    $2333
Mary     $1111

Total salaried: $3444
Hourly:
Chris     $122

Total Hourly:122
----------------------
Grand Total: $3566

.txt 文件:

顺序如下:[id]、[name]、[title]、[phone]、[type]、[pay]

3,Frank,CFO,91111453,Salaried,2333
1,Mary,CEO,93424222,Salaried,1111
5,John,Sales user,9321312,Commission,9999
7,Chris,Admin,98888753,Hourly,122

代码:

     #salaried
        awk -F, 'BEGIN {print "Salaried"} $5=="Salaried"{salaried+=$6; printf "%s\t\t\t\t$%s\n", $2, $6} END {printf "Total salaried payroll: \t$%s", salaried}' $PAYROLL
       echo
       echo
       #hourly
       awk -F, 'BEGIN {print "Hourly"} $5=="Hourly"{hourly+=$6; printf "%s\t\t\t\t$%s\n", $2, $6} END {printf "Total Hourly payroll: \t\t$%s", hourly}' $PAYROLL
       echo
       echo "Grand total: 

【问题讨论】:

    标签: bash awk


    【解决方案1】:

    像这样使用awk;

    awk -F, '{t[$5]+=$6} END{for (i in t) print i, t[i]}' file
    Hourly 122
    Commission 9999
    Salaried 3444
    

    法兰德总数:

    awk -F, '{t[$5]+=$6} END{for (i in t) {sum+=t[i]; print i, t[i]} print "Grand Total: " sum}' file
    Hourly 122
    Commission 9999
    Salaried 3444
    Grand Total: 13565
    

    【讨论】:

    • 我已经列出了每小时 122、佣金 9999、工资 3444 相应的,现在我坚持将它们加在一起形成总计,因为这没有任何变量要添加
    • 嗨,我还有更多问题,很困惑。需要打印一份报告,其中计算有多少员工的工资为 1000 美元或更少。有谁知道/?
    • @Alien:我建议针对您的具体问题创建一个新问题以获得更好的答案。
    猜你喜欢
    • 2013-11-13
    • 1970-01-01
    • 2017-03-08
    • 1970-01-01
    • 2015-01-14
    • 2019-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多