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

如何修复文本CDR文件中的错误换行问题

CDR文件错误换行批量修正方案

核心判断逻辑:正常的CDR记录均以20xx-xx-xx格式的日期开头,所有非该格式开头的行均为上一条记录被错误拆分的部分,直接拼接至上一行末尾即可完成修复。

方案1:Linux/macOS 快速处理(awk命令,大文件性能最优)

直接在终端执行以下命令,自动完成所有错误行修正:

awk '/^20[0-9]{2}-/{if (buf) print buf; buf=$0; next} {buf = buf $0} END{print buf}' your_cdr_file.txt > fixed_cdr_file.txt
  • 命令说明:
    • 遇到以20xx-开头的行时,先输出上一条缓存的完整记录,再将当前行存入缓存
    • 非日期开头的行直接拼接至缓存内容末尾
    • 所有内容处理完成后输出最后一条缓存记录
  • 执行后会生成新的修正后文件fixed_cdr_file.txt,不会修改原文件,避免数据损坏。

方案2:跨平台Python脚本(Windows/macOS/Linux通用)

新建fix_cdr.py文件,写入以下代码:

import sys

def fix_cdr(input_path, output_path):
    buffer = ""
    with open(input_path, 'r', encoding='utf-8') as f_in, open(output_path, 'w', encoding='utf-8') as f_out:
        for line in f_in:
            line = line.rstrip('\n')
            # 适配2010-2039年的日期开头规则,可根据实际CDR时间范围调整
            if line.startswith(('201', '202', '203')):
                if buffer:
                    f_out.write(buffer + '\n')
                buffer = line
            else:
                buffer += line
        if buffer:
            f_out.write(buffer + '\n')

if __name__ == "__main__":
    if len(sys.argv) != 3:
        print("使用方法:python fix_cdr.py 输入CDR文件路径 输出修正后文件路径")
        sys.exit(1)
    fix_cdr(sys.argv[1], sys.argv[2])

执行方式:

python fix_cdr.py your_cdr_file.txt fixed_cdr_file.txt

验证修正结果

Linux/macOS 下可执行以下命令检查是否还有残留的错误行(即非日期开头的行),无输出则说明所有错误行已修复:

grep -v "^20[0-9]\{2\}-" fixed_cdr_file.txt

注意事项

  • 处理前请先备份原CDR文件,避免操作失误导致数据丢失
  • 若CDR文件编码不是UTF-8,可修改Python脚本中open函数的encoding参数适配对应编码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 11:15:04