Bash Shell数据清洗:如何为文本插入分隔符生成目标格式CSV文件
Bash文本处理实现方案
你需要实现的是在每行开头数字段和后续文本之间插入|分隔符,同时保留原始的空格对齐效果,可直接用以下两种常用方案:
方案1:sed 实现(最简单快捷)
执行以下命令即可完成转换:
sed -E 's/^([[:space:]]*[0-9]+)[[:space:]]/\1 | /' input.txt > output.csv
参数说明:
-E开启扩展正则表达式支持- 正则匹配行首任意空白+连续数字,捕获为第一分组后,将后续的第一个空格替换为
|,完全保留原始的数字左侧空格对齐效果
方案2:awk 实现(适合后续需要扩展字段处理的场景)
执行以下命令完成转换:
awk '{sub(/^[[:space:]]*[0-9]+[[:space:]]/, "&| ")}1' input.txt > output.csv
参数说明:
sub函数匹配行首的数字块加前后空格,直接在匹配到的内容末尾追加|即可实现需求- 末尾的
1表示输出所有处理后的行
你可以先去掉重定向部分直接执行命令查看输出,确认符合预期后再写入目标文件即可。
内容的提问来源于stack exchange,提问作者Sachin K
相关产品推荐
相关产品推荐

