如何从另一个文件字段中读取两个文件并在字段中添加或减去余额

时间:2014-04-30 12:17:24

标签: awk

文件1:

Joes Garage                             
Utility Muffin Research Kitchen         
Apple   

文件2:

Joes Garage $100.24 payment 
PipCo $20.13 due    
Utility Muffin Research Kitchen $2.44 due       
Uber $50.33 payment 
Microsoft $120.33 due   
Apple $220.33 payment
uber $40.44 payment
PipCo $40.99 payment
Apple $100.44 due

我只想打印文件1中列出的商家名称的读数并计算其余额。 例如,企业可能有不同的交易。因此,只用一个余额打印该业务。 谢谢

1 个答案:

答案 0 :(得分:0)

免责声明:我不确定我是否正确解释了这个问题。

这是一个欺骗并使用sed预格式化file2的版本,因此我们可以直接访问awk中的相关字段。如果您只想使用awk完成所有工作,则可能需要使用某种循环和/或split

$ cat t.awk
#!/usr/bin/awk -f

BEGIN { FS=":" }
NR==FNR {
        switch($3) {
            case "payment":
                balance[$1] += $2
                break
            case "due":
                balance[$1] -= $2
                break
        }
        next
    }
{
    if ($0 in balance)
        printf "%s %s$%0.2f\n",
            $0,
            balance[$0] >= 0 ? "" : "-",
            sqrt(balance[$0]*balance[$0])
}

$ ./t.awk <(sed -e 's# \$#:#' -e 's#[[:digit:]] #:#' file2.txt) file1.txt
Joes Garage $100.20
Utility Muffin Research Kitchen -$2.40
Apple $119.90

如果这是要求你只使用awk的作业,这应该可以作为一个起点,而不需要为你完成所有的工作。