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

如何将空行分隔多行字段的TXT转换为指定格式CSV文件

问题描述

现有多份同结构文本文件,单文件内容格式如下:

name1
...
nameN

title1
...
titleM

abstract1
...
abstractO

ID

各文件中N、M、O的数值不固定,所有字段通过空行分隔。需将该类数据转换为指定CSV格式:

  • 单个文件对应输出一行
  • 每行包含name、title、abstract、ID四个字段
  • 同一字段内的多行内容直接拼接为单条字符串
  • 字段间使用|作为分隔符
    目标输出示例:
name1 ...nameN|title1 ... titleM|abstract1 ... abstractO|ID

此前尝试使用awk、sed实现未达预期,需可直接运行的可行方案。

解决方案

使用awk实现最适配该场景,空行分隔的段落刚好对应4个目标字段,命令逻辑简洁且鲁棒性强,可自动忽略连续空行、文件首尾多余空行的干扰。

单文件处理

执行以下命令即可处理单个文件,直接输出符合要求的行内容:

awk -v RS='' -v ORS='' '{printf "%s%s", $0, (NR<4?"|":"\n")}' 你的文件路径

参数说明:

  • -v RS='':将awk的记录分隔符设置为空串,自动按空行切分内容,每个切分出的段落对应一个目标字段
  • -v ORS='':关闭awk默认的记录输出自动追加换行的逻辑,避免产生多余换行
  • 执行逻辑:遍历切分后的4个段落,前3个字段输出后追加|分隔符,第4个ID字段输出后追加换行,段落内的多行内容会自动拼接为空格分隔的连续字符串,完全匹配需求。

如果需要同字段内的多行内容完全无间隔拼接(不要自动填充的空格),使用以下变体命令即可:

awk -v RS='' -v ORS='' -v OFS='' '{printf "%s%s", $0, (NR<4?"|":"\n")}' 你的文件路径

批量处理

如果需要批量处理当前目录下所有后缀为.data的目标文件,合并输出到同一个结果CSV,执行以下脚本即可:

# 若不需要CSV表头可删除下一行
echo "name|title|abstract|ID" > result.csv
# 遍历所有.data文件追加结果
for file in *.data; do
  awk -v RS='' -v ORS='' '{printf "%s%s", $0, (NR<4?"|":"\n")}' "$file" >> result.csv
done

执行完成后结果会保存在当前目录的result.csv文件中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 11:15:17