shell脚本实现Excel表格半自动化

其实运维工作中经常会遇到整理一些表格的问题 ,比如领导要看服务器资源,配置,或者k8s容器资源使用率之类的(非技术类总监可能一时半会看不懂监控大屏 这个时候excel相对是比较直观,相对) 也会使用一些shell脚本 批量返回数据手动往excel里面粘贴

需求

电商平台的一些sku数据 ,组合sku字段有5行数据相同,平台sku 要复制一份左边的sku和下面三个固定的商品,还有一个是截取值.下面的效果就是最终效果
在这里插入图片描述

b.txt # 存放商品组列表中sku

可以从数据库里导出sku表

[root@node1 ~]# vim b.txt 
ACCS1793-CARD982-ZT617-C4002-15-Grandma
ACCS1793-CARD982-ZT617-C4002-15-Nanny
ACCS1793-CARD982-ZT617-C4002-15-Nana
ACCS1793-CARD982-ZT617-C4002-15-Nan
ACCS1793-CARD982-ZT617-C4002-15-Nanna
ACCS1793-CARD982-ZT617-C4002-15-Grammy
ACCS1793-CARD982-ZT617-C4002-15-Mimi
ACCS1793-CARD982-ZT617-C4002-15-Granny
ACCS1793-CARD982-ZT617-C4002-15-Grandmother
....
需要对该内容进行重复输出5次
脚本:
[root@node1 ~]# for i in `cat b.txt`;do echo  $i;echo $i ;echo $i;echo $i;echo $i;done
注释: b.txt文件名可以自定义 ,在for循环中 文件名需要与自己定义的一致 其他脚本同理 不做过多赘述
#实现效果:
[root@node1 ~]# for i in `cat b.txt`;do echo  $i;echo $i ;echo $i;echo $i;echo $i;done
ACCS1793-CARD982-ZT617-C4002-15-Grandma
ACCS1793-CARD982-ZT617-C4002-15-Grandma
ACCS1793-CARD982-ZT617-C4002-15-Grandma
ACCS1793-CARD982-ZT617-C4002-15-Grandma
ACCS1793-CARD982-ZT617-C4002-15-Grandma
ACCS1793-CARD982-ZT617-C4002-15-Nanny
ACCS1793-CARD982-ZT617-C4002-15-Nanny
ACCS1793-CARD982-ZT617-C4002-15-Nanny
ACCS1793-CARD982-ZT617-C4002-15-Nanny
ACCS1793-CARD982-ZT617-C4002-15-Nanny
ACCS1793-CARD982-ZT617-C4002-15-Nana
...
附赠商品sku 其一 :
[root@node1 ~]# sed -e  "s/$/ \nrongbudaizi\nguanhua-Orange\nBox-Khaki-9*9*3-001\n/" b.txt
效果展示:
[root@node1 ~]# sed -e  "s/$/ \nrongbudaizi\nguanhua-Orange\nBox-Khaki-9*9*3-001\n/" b.txt 
ACCS1793-CARD982-ZT617-C4002-15-Grandma 
rongbudaizi
guanhua-Orange
Box-Khaki-9*9*3-001

ACCS1793-CARD982-ZT617-C4002-15-Nanny 
rongbudaizi
guanhua-Orange
Box-Khaki-9*9*3-001

....
# 最后一行内容需要单独截取,一条脚本无法实现 ,故 进行换行占位. 后续会通过excel函数合并
#脚本解释:
sed -e  "s/$/                                          # 将b.txt文件中每行末尾替换
\nrongbudaizi\nguanhua-Orange\nBox-Khaki-9*9*3-001\n/" # \n 换行符 其中rongbudaizi之类商品时固定的 每多一件商品后续增加一个换行符 ,如商品后续有变更 只需在相同位置进行替换即可
附赠商品sku 其二 :
[root@node1 ~]# cat b.txt | awk -F "-" '{print$1"-"$3"-"$(NF-1)}' |sed -n "s/$/ \n\n\n\n/p"
# cat b.txt 查看去重商品 列表
# | 管道符号 将前面的输出作为后面的输入
#  awk -F "-" 通过awk 命令截取字符串 以- 作为分隔符
# {print$1"-"$3"-"$(NF-1)} $1 截取第一行内容 "-" 引号之间的-是自己指定的分隔符  $(NF-1) 是最后一个字段的前一个 这里取到的是cm字段
# s/$/ \n\n\n\n/p" 通过sed命令将每行的末尾处 增加4个换行符 
效果展示:
[root@node1 ~]# cat b.txt | awk -F "-" '{print$1"-"$3"-"$(NF-1)}' |sed -n "s/$/ \n\n\n\n/p"
ACCS1793-ZT617-15 




ACCS1793-ZT617-15 




...
excel 拼接
  • 将第一步for 循环的结果 粘贴到excel *组合sku字段实现
  • 将附赠商品sku 其一的内容粘贴到新的一列 然后将附赠商品sku 其二粘贴到紧邻的一列 此时单元格格式为
CARD982-Grandma
rongbudaizi
guanhua-Orange
Box-Khaki-993-001
ACCS1793-ZT617-15
CARD982-Nanny
rongbudaizi
guanhua-Orange
Box-Khaki-993-001
ACCS1793-ZT617-15
CARD982-Nana
rongbudaizi
guanhua-Orange
Box-Khaki-993-001
ACCS1793-ZT617-15
  • 通过拼接函数即可将两列合并为一列

    • 拼接函数为 =A1&B1
    CARD982-GrandmaCARD982-Grandma
    rongbudaizirongbudaizi
    guanhua-Orangeguanhua-Orange
    Box-Khaki-993-001Box-Khaki-993-001
    ACCS1793-ZT617-15ACCS1793-ZT617-15
    CARD982-NannyCARD982-Nanny
    rongbudaizirongbudaizi
    guanhua-Orangeguanhua-Orange
    Box-Khaki-993-001Box-Khaki-993-001
    ACCS1793-ZT617-15ACCS1793-ZT617-15
    CARD982-NanaCARD982-Nana
    rongbudaizirongbudaizi
    guanhua-Orangeguanhua-Orange
    Box-Khaki-993-001Box-Khaki-993-001
    ACCS1793-ZT617-15ACCS1793-ZT617-15
    CARD982-NanCARD982-Nan
    rongbudaizirongbudaizi
    guanhua-Orangeguanhua-Orange
    Box-Khaki-993-001Box-Khaki-993-001
    ACCS1793-ZT617-15ACCS1793-ZT617-15
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值