ZBLOG

[pgsql] host=127.0.0.1 port=5432 database=emm_manager user=uniemm passwd=OPwdVGWjHT8nQmQ7BEav8g== [redis] host=10.19.83.70,10.19.83.70,10.19.83.70,10.19.83.70,10.19.83.70,10.19.83.70 port=7001,7002,7003,7004,7005,7006 passwd=8xNnDa3XamGiMw== mode=...

可以通过正则表达式或字符串处理提取 port 的值。以下是几种实现方法:


1. 使用 grep(命令行)

# 提取 [pgsql] 的 port(单端口)
grep -A5 "\[pgsql\]" config.txt | grep "port=" | cut -d= -f2

# 提取 [redis] 的 port(多个端口,逗号分隔)
grep -A10 "\[redis\]" config.txt | grep "port=" | cut -d= -f2

输出

  • pgsql: 5432
  • redis: 7001,7002,7003,7004,7005,7006

2. 使用 awk(命令行)

# 提取 [pgsql] 的 port
awk '/\[pgsql\]/{flag=1; next} /^\[/{flag=0} flag && /^port=/{print $2}' FS== config.txt

# 提取 [redis] 的 port
awk '/\[redis\]/{flag=1; next} /^\[/{flag=0} flag && /^port=/{print $2}' FS== config.txt

3. 使用 Python

import re

config = """
[pgsql]
host=127.0.0.1
port=5432
database=emm_manager
user=uniemm
passwd=OPwdVGWjHT8nQmQ7BEav8g==
[redis]
host=10.19.83.70,10.19.83.70,10.19.83.70,10.19.83.70,10.19.83.70,10.19.83.70
port=7001,7002,7003,7004,7005,7006
passwd=8xNnDa3XamGiMw==
mode=1
"""

# 提取 pgsql port
pgsql_port = re.search(r'\[pgsql\].*?port=(\d+)', config, re.DOTALL)
if pgsql_port:
    print("pgsql port:", pgsql_port.group(1))  # 输出: 5432

# 提取 redis port(多个值)
redis_port = re.search(r'\[redis\].*?port=([^\n]+)', config, re.DOTALL)
if redis_port:
    print("redis ports:", redis_port.group(1))  # 输出: 7001,7002,7003,7004,7005,7006

4. 使用 JavaScript

const config = `
[pgsql]
host=127.0.0.1
port=5432
database=emm_manager
user=uniemm
passwd=OPwdVGWjHT8nQmQ7BEav8g==
[redis]
host=10.19.83.70,10..0..0..0..0..083...070...070...070...070...070...070...
port===00000000000000000000000000,,,.=.=.=.=.=.=.=.=.=.=
passwd====AAAAAAAAAAAAAAAAAAAAAA===
mode===11111111111111111111111111=
`;

// 提取 pgsql port
const pgsqlMatch = config.match(/\[pgsql\][\s\S]*?port=(\d+)/);
if (pgsqlMatch) console.log("pgsql port:", pgsqlMatch[1]);

// 提取 redis port(多个值)
const redisMatch = config.match(/\[redis\][\s\S]*?port=([^\n]+)/);
if (redisMatch) console.log("redis ports:", redisMatch[1]);

✅ 通用正则表达式模式:

  • 单端口(如 pgsql):port=(\d+)
  • 多端口(如 redis):port=([^\n]+)

📌 注意:

如果配置文件中存在多个相同section(如多个[pgsql]),需要更精确的匹配逻辑。以上示例假设每个section只出现一次。


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

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

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

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

联系我们

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

微信号:3007537140

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

关注我们
x

注册

已经有帐号?