Awk 如何读取两个文件并从另一个文件字段中添加或减去字段中的余额
文件1:Awk 如何读取两个文件并从另一个文件字段中添加或减去字段中的余额,awk,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 App
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中列出的企业名称中读取的数据,并计算它们的余额。
例如,一个企业可能有不同的交易。因此,仅使用一个余额打印该业务。
谢谢免责声明:我不确定我是否正确解释了这个问题 这是一个作弊的版本,它使用
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预期输出?这是家庭作业吗?
$ ./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