Awk:如何遍历文件以获取每一行?

use*_*009 0 awk

我有一个包含信息的文件:

Name   Rate   Hours



Clark  8.5    42
Sarah  18.5   19 
Joe    10     25
Paul   12     5
Run Code Online (Sandbox Code Playgroud)

我想计算每个员工的总工资。

但是我无法让我的循环工作,因为我不确定文件开头i <=的标题 ( Name, Rate, Hours)应该是什么。

到目前为止,我有这个:

awk 'BEGIN{
    total = 0;
}

{
    rate = $2;
    hours = $3;
        for (i = 1; i<= NR; i++)
    {
            total = rate * hours;
    }
}

END {
    print "Total = $" total;
}' testfile.dat
Run Code Online (Sandbox Code Playgroud)

在此先感谢您的帮助!

Geo*_*iou 5

作为替代方案,这样的东西可以正常工作并且有一个很好的输出:

awk -v OFS="\t" 'NR==1{$4="total"}NR>1{$4=$2*$3}1' testfile.dat
#Output:
Name    Rate    Hours   total
Clark   8.5       42    357
Sarah   18.5      19    351.5
Joe     10        25    250
Paul    12         5    60
Run Code Online (Sandbox Code Playgroud)

  • 没必要,你非常有帮助,非常感谢! (2认同)