当前位置:   article > 正文

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

shell读取excel

碎碎念

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 类似这种的结构

  1. # 首先使用grep或许包含有 username 的这一行
  2. grep 'username' man.csv
  3. # 然后使用管道把结果传输给awk来处理,指定分隔符为逗号
  4. grep 'username' man.csv | awk -F','
  5. # 接着使用循环体判断username在第几列
  6. # 例如在第3列,那么就获取第4列的结果
  7. for(i=1;i<=NF;i++){
  8. if($i=="username")print $(i+1)
  9. }
  10. # 由于以上的函数要写在awk的代码参数中
  11. awk -F分隔符 '代码'
  12. # 所以要括起来,最后的结果就类似于
  13. 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博客

祝大家玩得开心

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/601246
推荐阅读
相关标签
  

闽ICP备14008679号