You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用sed正则表达式按行替换config.txt中的对应IP地址

替换方案

错误原因分析

你之前写的sed命令存在两个核心问题:

  • 正则语法不合法:量词*不能作为匹配规则的开头,你写的*@\+:*没有匹配IP段的逻辑
  • 替换段错误使用通配符:sed替换规则的右侧为普通字符串,*不会作为通配符生效

单条内容测试命令

如果你需要测试单条字符串的替换效果,可以用以下命令:

echo "f03889d9abcb6a16155411bb8e0a34dddb5c8e4c@192.168.3.4:26601" | sed 's/@[^:]\+:/@10.0.4.5:/'

正则逻辑说明:@[^:]\+: 匹配@符号之后、第一个:符号之前的所有字符(也就是动态IP段),直接替换为目标IP即可。


批量按行替换命令

要实现config.txt每行的IP自动替换为ip.txt对应行的IP,有两种常用实现方式:

awk实现(更简洁)

awk 'NR==FNR{ip[NR]=$0;next} {sub(/@[^:]+:/,"@"ip[FNR]":")}1' ip.txt config.txt

命令逻辑:

  1. 先读取ip.txt,将每行IP按行号存入数组
  2. 再读取config.txt,逐行替换IP段后输出结果

sed实现

paste ip.txt config.txt | sed -E 's/([^\t]+)\t(.*@)[^:]+:/\2\1:/'

命令逻辑:

  1. 用paste命令将两个文件的同行列用制表符拼接
  2. 用sed提取拼接行第一部分的新IP,替换原有IP段后输出

内容的提问来源于stack exchange,提问作者Rukmangathan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 08:36:06