linux - 使用 awk 进行计算,在输出中获得额外的行
问题描述
我正在尝试使用 awk 命令和一些计算打印一个简单的报告。这是输入文件:
1 Syed-Yamin 3 500
2 Ilia-Nika 4 400
3 Mike-Ro 5 300
4 Witold-Ryb 2 200
5 Farhan-F 1 500
在报告中,我想打印每行的第 1 列、第 2 列以及第 3 列和第 4 列相乘的计算结果。另外,我想在底部打印每行所有乘法的总和。我在输出中得到了一些额外的行,并想清理它们。所以最终结果应该是这样的:
1 Syed-Yamin 1500
2 Ilia-Nika 1600
3 Mike-Ro 1500
4 Witold-Ryb 400
5 Farhan-F 500
Total amount = $5500
awk 'BEGIN {total=0;}
{print "$1, $2, ($3 * $4)";}
total=total+($3 * $4)
END {print "Total Amount = $", total;}' input
解决方案
在这里我为你修好了……
$ awk -v OFS='\t' '{$3 *= $4; NF--; total += $3}1
END {print "","Total Amount =", "$"total}' file |
column -ts$'\t'
1 Syed-Yamin 1500
2 Ilia-Nika 1600
3 Mike-Ro 1500
4 Witold-Ryb 400
5 Farhan-F 500
Total Amount = $5500
也许更好地格式化这种方式
$ awk '{printf "%d\t%s\t%5d\n",$1,$2,$3*=$4; total+=$3}
END {print "\tTotal Amount =\t$"total}' file |
column -ts$'\t'
1 Syed-Yamin 1500
2 Ilia-Nika 1600
3 Mike-Ro 1500
4 Witold-Ryb 400
5 Farhan-F 500
Total Amount = $5500
推荐阅读
- vue.js - VuePress 侧边栏不呈现
- php - 如何将 json 加载到具有多个 json 页面的 php 中?
- jquery - 在 10 秒内刷新 wordpress 网站中的 div 内容
- angular - 使用异步管道的可观察字符串数组不更新 nouislider.on 事件中的视图
- react-native - MaterialTopNavigator 中的 ScrollView 或 FlatList:拉动刷新在某些 iOS 设备上不起作用(X、X Max、8 Plus)
- scala - Scala 将迭代方法转换为 Iterator 的函数方法
- matlab - Matlab:对二维矩阵进行排序并保留三角形组中的节点
- html - R:对齐 DT 表中的嵌套标题
- postgresql - 如何使用具有排除约束的 ON CONFLICT?
- documentation - 如何获取 pyomo 函数、方法等的信息/帮助