shell在处理复杂问题的时候不具备优势,如果业务环境能够使用python的话用python又简单又好用,但是很多云平台的现场可能需要shell脚本文件(还好是要求bash)
但是现在有一个业务场景就是运维人员会把参数写在excel表格中
然后开发人员就要根据运维的表格完成自动构筑,第一步就是取得参数
先把excel的文件转换成csv文件
不管用的是微软office或者wps或者libre office,首先打开.xls或者.xlsx文件,编辑好数据
(以下是胡编的数据,当然假设他们的parameter sheet是这么乱写的话)
然后点击导航栏的文件 -> 另存为
然后随便起个名字,后缀名改成.csv后保存即可
然后查看保存的地方,比如我保存在桌面上,就进入到桌面的路径然后用cat查看是否格式正确
该有的东西都有了,每个格子都是用逗号隔开的,如果逗号之间没有任何东西的话
就代表这是一个空格子
根据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
祝大家玩得开心