Linux 使用awk进行计算,在输出中获得额外的行
我正在尝试使用awk命令和一些计算打印一个简单的报告。 这是输入文件:Linux 使用awk进行计算,在输出中获得额外的行,linux,awk,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 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 -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
你的代码在哪里?我拍了一张快照并发布了,但后来编辑了主题以添加代码。非常感谢!出于某种原因,我更喜欢你的第一个解决方案。
$ 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