我在txt文件中获得了以下数据,
Apple:Fruit:20:30
Leek:Vegetable:40:50
在表格中,(项目描述):(项目类别):(数量):(价格)。如何使用shell脚本绘制表格。有输出
Item Description Category Qty Price Total Sales
--------------------------------------------------------------------------------
Apple Fruit 20 $30.00 $600.00
Leek Vegetable 40 $50.00 $2000.00
其中总销售额等于数量x价格。请帮忙。提前谢谢!
答案 0 :(得分:3)
这可以帮助你开始
awk '{printf "%-27s%-18s%-11s$%-14.2f$%.2f\n",$1,$2,$3,$4,$3*$4}' FS=: foo.txt
结果
Apple Fruit 20 $30.00 $600.00 Leek Vegetable 40 $50.00 $2000.00
答案 1 :(得分:2)
我会在awk中执行计算和货币格式化,使用列表空间,然后sed添加行:
awk -F: -v OFS=: '
BEGIN {print "Item Description","Category","Qty","Price","Total Sales" }
{ $(NF+1) = $3*$4; $4 = sprintf("$%.2f", $4); $5 = sprintf("$%.2f", $5); print }
' file.txt |
column -s: -t |
sed '1{p;s/./-/g}'
Item Description Category Qty Price Total Sales
-----------------------------------------------------
Apple Fruit 20 $30.00 $600.00
Leek Vegetable 40 $50.00 $2000.00
答案 2 :(得分:1)
您可以使用awk进行此操作,但使用列计算列大小更简洁(更可靠):
awk 'BEGIN { FS=":" ; print "Item description:Category:Qty:Price:Total sales"}
{printf("%s:%s:%i:$%.2f:$%.2f\n",$1,$2,$3,$4,$3*$4)}' INPUTFILE | column -t -s:
我要离开打印分隔线(例如,在第一行计算column
的长度等后,用awk捕获$0
输出。