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

如何合并TSV文件中双引号内的多行单元格内容?

解决TSV文件中双引号内多行文本合并问题

需求说明

处理包含两列的TSV文件,仅合并双引号内的多行内容,保留原制表符分隔格式,其他行保持不变。

测试输入:

test    try
test    "a short exam to measure somebody's knowledge 
or skill in something."
testing examine

期望输出:

test    try
test    "a short exam to measure somebody's knowledge or skill in something."
testing examine

解决方案

使用awk跟踪引号状态,实现精准的多行合并:

awk -v FS='\t' -v OFS='\t' '
    BEGIN { in_quote = 0 }
    {
        if (in_quote) {
            # 处于未闭合引号内,将当前行内容追加到缓存行,替换换行为空格
            prev_line = prev_line " " $0
            # 检查当前行是否包含闭合引号
            if (gsub(/"/, "&") % 2 == 1) {
                in_quote = 0
                print prev_line
            }
        } else {
            # 不在引号内,检查当前行是否有未闭合引号
            if (gsub(/"/, "&") % 2 == 1) {
                in_quote = 1
                prev_line = $0
            } else {
                print $0
            }
        }
    }
    # 处理文件末尾仍未闭合引号的异常情况
    END { if (in_quote) print prev_line }
' test.tsv

脚本说明

  • in_quote 变量标记当前是否处于未闭合的双引号环境中
  • 检测到未闭合引号时,将后续行内容追加到缓存变量prev_line,并将换行替换为空格
  • 检测到引号闭合时,输出合并后的完整行
  • 未处于引号内的行直接输出,完全保留原TSV格式

测试结果

运行上述脚本后,输出与期望完全一致,同时严格保留了原文件的制表符分隔结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 12:31:11