ZBLOG

在配置文件中提取这一段 proxy_pass http://10.19.29.235:9099; proxy_pass 协议,端口都是固定的,格式也固定,请提取其中的ip,请注意,会存在多个ip

如果配置文件中 proxy_pass 的格式固定为 proxy_pass http://IP:9099;(协议和端口固定),并且需要提取所有出现的 IP 地址,可以使用以下方法:


方法1:grep + cut(最简单)

grep -o 'proxy_pass http://[0-9.]\+:9099;' 文件名 | cut -d '/' -f3 | cut -d ':' -f1

说明:

  1. grep -o:精确匹配 proxy_pass http://IP:9099; 格式的行。
  2. 第一个 cut -d '/' -f3:以 / 为分隔符,取第3段(即 10.19.29.235:9099;)。
  3. 第二个 cut -d ':' -f1:以 : 为分隔符,取第1段(即 IP)。

方法2:直接使用 awk

awk '/proxy_pass/{split($2, a, "[/:]"); print a[3]}' 文件名

说明:

  • split($2, a, "[/:]"):将第二个字段(如 http://10.19.29.235:9099;)按 /: 分割到数组 a,IP 位于 a[3]

方法3:通用正则提取(支持多文件)

grep -ho 'proxy_pass http://[0-9.]\+:9099;' *.conf | sed 's/.*\/\/\([0-9.]\+\):.*/\1/'

说明:

  • -h:禁止输出文件名(多文件时默认会显示文件名)。
  • 正则分组提取:通过 sed + \( \) 捕获 IP。

示例输出

假设配置文件内容如下:

server {
    proxy_pass http://10.19.29.235:9099;
    proxy_pass http://192.168.1.100:9099;
}

运行命令后输出:

10.19.29.235
192.168.1.100

注意事项

  1. 严格匹配格式:确保所有行格式均为 proxy_pass http://IP:9099;,否则需调整正则。
  2. 多文件处理:替换 *.conf 为实际文件名或通配符(如 /etc/nginx/*.conf)。


    内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=23791

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?