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

碎碎念

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

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

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

转换成csv文件

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

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

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

【shell】读取表格文件的数据_第1张图片

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

【shell】读取表格文件的数据_第2张图片

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

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

【shell】读取表格文件的数据_第3张图片

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

就代表这是一个空格子

使用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博客

祝大家玩得开心

你可能感兴趣的:(shell,Linux,excel,linux,正则表达式)