某朋友突然问如何在使用 shell 脚本来获取某配置文件中第一次出现的某配置的值,之前的思路都是使用 grep 和 awk 来处理这种情况,今天想使用 sed 的正则功能来完成这个操作。
要处理的配置文件如下
https://raw.githubusercontent.com/nginxinc/docker-nginx/dbd053d52727bc8db0fec704caa22b8e0d5f6c84/mainline/alpine/nginx.conf
查阅了部分资料,最后完成的 shell 命令如下1
2curl -sS https://raw.githubusercontent.com/nginxinc/docker-nginx/dbd053d52727bc8db0fec704caa22b8e0d5f6c84/mainline/alpine/nginx.conf\
| sed -n '1,/include .*/{s/include \(.*\)/\1/p}'
主要使用了 sed 通过正则获取到所需要的配置的行,然后再通过正则圆括号匹配将配置值赋予变量 1 ,变量 1 在 sed 里为 "\1" ,当然还可以处理更复杂的情况,例如需要获取好几个值的情况,最后将变量 1 打印出来。sed 确实是一个功能很强大的工具,在此记录一下,供各位参考。
参考文档:"sed 简明教程" https://coolshell.cn/articles/9104.html