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

如何使用awk与grep匹配包含换行符的跨行XML配置模式

解决方案

方案1:使用支持PCRE的grep(适配Linux环境)

你之前的grep命令主要问题是正则没有正确匹配两行之间的空白字符,且参数搭配有误,正确命令如下:

grep -Pzo '(?s)<service id="http-upgrade-service" class="HTTPUpgrade">\s*<maxHeaderSize>65536</maxHeaderSize>' 你的文件路径

参数说明:

  • -P:启用PCRE正则语法
  • -z:将文件内容按NUL字符分隔读取,相当于把整个文件加载为单个字符串处理,支持跨行匹配
  • -o:仅输出匹配到的内容
  • (?s):开启单行模式,允许.匹配换行符
  • \s*:匹配两行之间的所有空白字符(包括缩进、换行、制表符),适配代码里的缩进格式

方案2:使用awk(全平台通用,兼容性更好)

如果你的环境没有支持PCRE的grep(比如macOS默认grep),可以用awk实现精准匹配,避免误匹配其他位置的maxHeaderSize:

awk '/\s*<service id="http-upgrade-service" class="HTTPUpgrade">/{
    line1 = $0
    getline
    if (/^\s*<maxHeaderSize>65536<\/maxHeaderSize>/) {
        print line1
        print $0
    }
}' 你的文件路径

逻辑说明:

  1. 先匹配到<service>开头的目标行,暂存当前行内容
  2. 读取下一行,判断是否为目标maxHeaderSize行
  3. 只有两行连续匹配成功才输出,完全排除其他位置的同参数干扰

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 06:27:03