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

将DHCP主机定义多行格式转单行?sed无法实现换行替换

DHCP主机配置条目格式转换方案

需求说明

需要将DHCP主机定义文件中的跨行条目:

host mx {
 fixed-address 10.0.1.161;

转换为单行格式:

host mx - fixed-address 10.0.1.161;

要求输出至标准输出(stdout),不原地修改原文件。注:sed无法直接实现该需求,因其原生不支持跨行的换行符替换操作。

实现方法

方法1:使用awk

awk可以轻松处理跨行文本匹配与拼接,执行以下命令:

awk '/host.*{/{sub(/\{/,"-"); buf=$0; next} /fixed-address/{print buf, $0}' 你的DHCP配置文件名
  • 逻辑说明:
    1. 匹配到含host和{的行时,把行尾的{替换成-,将该行内容存入临时变量buf,然后跳转至下一行。
    2. 匹配到含fixed-address的行时,将buf中的内容与当前行拼接后打印。

方法2:使用Perl单行命令

Perl支持跨行正则匹配,适合快速处理这类文本转换:

perl -0pe 's/host (\S+) {\n fixed-address (.*?);/host $1 - fixed-address $2;/g' 你的DHCP配置文件名
  • 逻辑说明:
    • -0参数让Perl读取整个文件内容(跨行处理),-p自动循环输出处理后的内容,-e指定执行的正则替换逻辑。
    • 通过正则匹配跨行的host条目结构,将其替换为目标单行格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 22:55:17