【shell】读取表格文件的数据

8 篇文章 0 订阅

碎碎念

shell在处理复杂问题的时候不具备优势,如果业务环境能够使用python的话用python又简单又好用,但是很多云平台的现场可能需要shell脚本文件(还好是要求bash)

但是现在有一个业务场景就是运维人员会把参数写在excel表格中

然后开发人员就要根据运维的表格完成自动构筑,第一步就是取得参数

转换成csv文件

先把excel的文件转换成csv文件

不管用的是微软office或者wps或者libre office,首先打开.xls或者.xlsx文件,编辑好数据

(以下是胡编的数据,当然假设他们的parameter sheet是这么乱写的话)

然后点击导航栏的文件 -> 另存为

然后随便起个名字,后缀名改成.csv后保存即可

然后查看保存的地方,比如我保存在桌面上,就进入到桌面的路径然后用cat查看是否格式正确

该有的东西都有了,每个格子都是用逗号隔开的,如果逗号之间没有任何东西的话

就代表这是一个空格子

使用awk获取数据

【linux】awk的基本使用-CSDN博客

根据awk的用法,首先我们知道csv文件已经帮我们把表格文件变成一行一行的用逗号隔开的文本,而我们刚好知道维护的人员(运维不会写脚本听起来很逆天,但是因为po主在日本,确实有好多运维不会写代码)会把username的值写在username后面,所以针对这一特征就可以截取

username , xxxx 类似这种的结构

# 首先使用grep或许包含有 username 的这一行
grep 'username' man.csv

# 然后使用管道把结果传输给awk来处理,指定分隔符为逗号
grep 'username' man.csv | awk -F','

# 接着使用循环体判断username在第几列
# 例如在第3列,那么就获取第4列的结果
for(i=1;i<=NF;i++){
    if($i=="username")print $(i+1)
}

# 由于以上的函数要写在awk的代码参数中
awk -F分隔符 '代码'

# 所以要括起来,最后的结果就类似于
grep 'username' man.csv | awk -F',' '{for(i=1;i<=NF;i++){if($i=="username")print $(i+1)}}'

就可以获得到数据啦

使用cut的话也可以获得数据,但是灵活上不如可以夹带代码私货的awk,比如明确知道在第4列的话就用谁都可以了

grep 'username' man.csv | cut -d',' -f4

 【linux】cut的基本使用-CSDN博客

祝大家玩得开心

  • 18
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值