Shell 根据命令的结果创建表
我想做的是从输出日志中获取一些行,将数据拆分为不同的列,如品牌、产品、数量等。这3列的所有信息都可以使用Shell 根据命令的结果创建表,shell,unix,Shell,Unix,我想做的是从输出日志中获取一些行,将数据拆分为不同的列,如品牌、产品、数量等。这3列的所有信息都可以使用 grep 'ITEMS_SOLD Today' /tmp/$$.items 此命令的结果类似于 XXXXXXXX ITEMS_SOLD Today for XXXX "brandname"."productname1" XXXX items sold : 123. XXXXXXXX ITEMS_SOLD Today for XXXX "brandname"."productname2"
grep 'ITEMS_SOLD Today' /tmp/$$.items
此命令的结果类似于
XXXXXXXX ITEMS_SOLD Today for XXXX "brandname"."productname1" XXXX items sold : 123.
XXXXXXXX ITEMS_SOLD Today for XXXX "brandname"."productname2" XXXX items sold : 345.
XXXXXXXX ITEMS_SOLD Today for XXXX "brandname"."productname3" XXXX items sold : 678.
现在我想从这些行中获取我的列的输入(可以有N行),并创建一个表结构,我可以通过邮件发送该表结构。“brandname”。“productname”的位置是第11行,数量(例如123)是第18行
我要求的成绩是
*Brand Product Quantity*
Brand product1 123
Brand product2 345
Brand product3 567
123
345
678
我可以通过删除引号和分隔符来拆分“Brandname.productname”
结果是
Brand product1
Brand Product2
Brand product3
quantity=`grep 'ITEMS_SOLD Today' /tmp/$$.items |awk '{print $18}'`
echo "quantity"
结果是
*Brand Product Quantity*
Brand product1 123
Brand product2 345
Brand product3 567
123
345
678
但我不知道怎么放进桌子里。请帮帮我
awk -F\" -v OFS='|' 'BEGIN { print "*Brand", "Product", "Quality*"} { sub(/.* : /, "", $5); sub(/[.]/, "", $5); print $2, $4, $5 }' file | column -t -s '|'
输出:
*Brand Product Quality*
brandname productname1 123
brandname productname2 345
brandname productname3 678
- 使用
进行格式化比使用column-t
更好printf
- 如果不需要标题,请删除
开始{打印“*品牌”、“产品”、“质量*”}
*Brand Product Quality*
brandname productname1 123
brandname productname2 345
brandname productname3 678
- 使用
进行格式化比使用column-t
更好printf
- 如果不需要标题,请删除
开始{打印“*品牌”、“产品”、“质量*”}
物品:
是否真的有空间?因为如果不是这样,sub(/.*:/,“”,$5)
应该是sub(/.*:/,“”,$5)
。每个字段或列都用“
由-F
指定。所需的列是第2列、第4列和第5列,分别为2美元、4美元和5美元$2和$4不需要重新格式化,但$5需要删除部分字符。我们使用sub
。只有“Brandname”。“product”在引号内。行中的其他文本没有引号。售出的商品用空格分隔,但没有引号。而且售出的商品后面不紧跟商品名称。中间有一些文本。123(数量)是行中的最后一个字。你能试着得到最后一个字吗..这可能很简单。这是为前两列创建的awk
,它工作正常,但第三列我没有得到想要的输出。在质量列中,我得到的是“XXXXXXXXXXXXX售出的物品:123”产品名称后面的所有文本都在第三列。如果你能解释一下你是如何考虑2美元、5美元和5美元的,那会很有帮助。出售的零件物品:
是否真的有空间?因为如果不是这样,sub(/.*:/,“”,$5)
应该是sub(/.*:/,“”,$5)
。每个字段或列都用“
由-F
指定。所需的列是第2列、第4列和第5列,分别为2美元、4美元和5美元$2和$4不需要重新格式化,但$5需要删除部分字符。我们使用sub
。只有“Brandname”。“product”在引号内。行中的其他文本没有引号。售出的商品用空格分隔,但没有引号。而且售出的商品后面不紧跟商品名称。中间有一些文本。123(数量)你能试着说最后一句话吗这可能很容易。