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

如何用sed/awk或Python替换日志指定内容并删除对应行

日志转换解决方案

AWK 命令

AWK 适合处理这种按组关联的文本行,以下命令可直接处理日志文件:

BEGIN { FS = ";"; OFS = ";" }
/^$/ { print; next }
/SVC;GX81CBCCONVCH10/ { svc = $0; next }
/EXT;/ {
    gsub(/GX81CBCCONVCH10/, $8, svc)
    print svc
    next
}
/RTC;/ { next }

使用方式:

# 保存为脚本文件执行
awk -f script.awk input.log > output.log

# 或直接单行执行
awk 'BEGIN { FS=";"; OFS=";" } /^$/ {print;next} /SVC;GX81CBCCONVCH10/ {svc=$0;next} /EXT;/ {gsub(/GX81CBCCONVCH10/,$8,svc);print svc;next} /RTC;/ {next}' input.log > output.log

说明:

  • 以分号作为字段分隔符,缓存匹配到的SVC行
  • 读取EXT行时,提取第8个字段(GX开头的目标字符串),替换SVC行中的旧字符串后输出
  • 跳过RTC行,保留原有的空行分隔

Sed 命令

Sed 需要启用多行模式处理连续三行,以下命令兼容GNU Sed:

:loop
/SVC;GX81CBCCONVCH10/{
    N
    /EXT;/!b loop
    N
    s/\(.*\)GX81CBCCONVCH10\(.*\n\).*EXT;.*;.*;.*;\(GX[^;]*\).*\n.*RTC.*/\1\3\2/
}
/RTC;/d
/EXT;/d

使用方式:

# 保存为脚本文件执行
sed -E -f script.sed input.log > output.log

# 或直接单行执行
sed -E ':loop; /SVC;GX81CBCCONVCH10/{N; /EXT;/!b loop; N; s/\(.*\)GX81CBCCONVCH10\(.*\n\).*EXT;.*;.*;.*;\(GX[^;]*\).*\n.*RTC.*/\1\3\2/}; /RTC;/d; /EXT;/d' input.log > output.log

说明:

  • 循环读取行直到捕获到SVC+EXT+RTC的完整组
  • 用正则提取EXT行中的GX开头字符串,替换SVC行的目标内容
  • 最后删除所有EXT和RTC行,保留处理后的SVC行和空行

Python 脚本

如果需要更灵活的逻辑,Python脚本适合扩展:

with open("input.log", "r") as infile, open("output.log", "w") as outfile:
    lines = infile.read().splitlines()
    i = 0
    while i < len(lines):
        line = lines[i].strip()
        if not line:
            outfile.write("\n")
            i += 1
            continue
        # 处理目标SVC行
        if "SVC;GX81CBCCONVCH10" in line:
            svc_line = line
            # 读取后续EXT行提取替换字符串
            ext_line = lines[i+1]
            gx_str = ext_line.split(";")[7]
            # 完成替换并输出
            new_svc = svc_line.replace("GX81CBCCONVCH10", gx_str)
            outfile.write(new_svc + "\n")
            # 跳过EXT和RTC行
            i += 3
        else:
            # 处理其他行(若存在)
            outfile.write(line + "\n")
            i += 1

使用方式:保存为convert_log.py,执行python convert_log.py,将生成output.log

说明:

  • 按行读取日志,识别并保留空行
  • 遇到目标SVC行时,读取后续EXT行提取替换字符串,完成替换后输出
  • 跳过对应的EXT和RTC行,确保只保留处理后的SVC行和分隔空行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 17:18:10