使用 sed 获取配置文件的指定值

某朋友突然问如何在使用 shell 脚本来获取某配置文件中第一次出现的某配置的值,之前的思路都是使用 grep 和 awk 来处理这种情况,今天想使用 sed 的正则功能来完成这个操作。

要处理的配置文件如下
https://raw.githubusercontent.com/nginxinc/docker-nginx/dbd053d52727bc8db0fec704caa22b8e0d5f6c84/mainline/alpine/nginx.conf

查阅了部分资料,最后完成的 shell 命令如下

1
2
curl -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