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

如何用Bash处理CSV文件并移除指定列中的CR LF

处理文件第6列中的换行符问题

针对你遇到的供应商文件问题——仅少数行的第6列包含CR/LF,全局替换会破坏正常记录末尾的换行——可以用awk高效处理,兼顾大文件性能和精准修改:

awk -F'~' -v OFS='~' '
{
    buffer = buffer $0
    if ($0 ~ /~$/) {
        n = split(buffer, fields, /~/)
        gsub(/\r?\n/, " ", fields[6])
        for (i=1; i<=n; i++) {
            printf "%s%s", fields[i], (i==n ? "\n" : OFS)
        }
        buffer = ""
    }
}' 待处理文件.txt > 处理后文件.txt

工作原理

  1. 累积不完整记录:问题行因第6列含换行被拆成多行,脚本用buffer累积内容,直到遇到以~结尾的行(正常记录的结束标志)。
  2. 精准修改第6列:把累积的完整记录按~分割为字段数组,专门将第6字段里的\r\n或\n替换成空格。
  3. 输出完整记录:重新拼接所有字段,保留原分隔符和记录末尾的换行,确保输出格式与原文件一致。

优势

  • 效率高:awk处理百万级行毫无压力,无需冗余遍历判断。
  • 精准安全:只修改第6列内部的换行,完全不影响记录末尾的正常CR/LF。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 20:05:33