如果你只需要提取 proxy_pass
后面的 IP 地址(不包括端口和协议),可以使用以下命令:
方法1:grep
+ sed
(推荐)
grep -o 'proxy_pass\s\+http://[0-9.]\+:[0-9]\+;' 文件名 | sed -n 's/.*http:\/\/\([0-9.]\+\):.*/\1/p'
说明:
grep -o
:先匹配完整的proxy_pass http://IP:PORT;
格式。
sed
:通过正则提取其中的 IP 部分:
s/.*http:\/\/\([0-9.]\+\):.*/\1/p
:
\([0-9.]\+\)
捕获 IP(如192.168.1.1
)到分组\1
。
/p
只打印匹配结果。
方法2:直接使用 awk
awk '/proxy_pass/{match($0, /http:\/\/([0-9.]+):/, a); print a[1]}' 文件名
说明:
match($0, /http:\/\/([0-9.]+):/, a)
:
在每行中匹配http://IP:
,并将 IP 存入数组a[1]
。
示例输出:
假设文件内容为:
proxy_pass http://192.168.1.100:8080;
运行上述命令后,输出结果为:
192.168.1.100
如果需要处理多个文件(如所有 .conf
文件),将 文件名
替换为 *.conf
即可。
内容由零声教学AI助手提供,问题来源于学员提问