如何按指定规则将竖排文本文件转换为CSV文件?
解决单列文本转指定规则CSV的问题
输入文本
08-ipa_group ,evouth.zip ,zipe.zip ,auth-service.zip 18-ws-api_group ,mocks.zip ,auth-service.zip ,a-service.zip
期望输出
08-ipa_group,evouth.zip,zipe.zip,auth-service.zip 18-ws-api_group,mocks.zip,auth-service.zip,a-service.zip
解决方案
方法1:用awk处理(简洁高效)
awk是处理文本的常用工具,一行命令就能完成转换:
awk '/^[^,]/ {if (line != "") print line; line=$0} /^,/ {line=line$0} END {print line}' input.txt > output.csv
逻辑说明:
- 匹配到不以逗号开头的行时,若已有拼接好的内容则先打印,再将当前行设为新的起始行
- 匹配到以逗号开头的行时,直接拼接到当前行末尾
- 处理完所有行后,打印最后一行的拼接结果
方法2:用Python脚本处理
适合习惯用Python的场景,脚本逻辑清晰易调整:
current_line = "" with open("input.txt", "r") as infile, open("output.csv", "w") as outfile: for line in infile: line = line.strip() if not line: continue if line.startswith(","): current_line += line else: if current_line: outfile.write(current_line + "\n") current_line = line if current_line: outfile.write(current_line + "\n")
运行脚本后,目标CSV文件会直接生成。
方法3:用Shell脚本结合sed处理
纯Shell环境下也能实现:
sed -e ':a' -e '/^,/{N;s/\n//;ba}' input.txt > output.csv
逻辑说明:
sed会循环查找所有以逗号开头的行,将其与前一行合并(移除换行符),最终直接输出符合要求的CSV内容。
内容的提问来源于stack exchange,提问作者Stradia Mil Grau
相关产品推荐
相关产品推荐

