如何拆分文本文件列值为多列并转CSV?解决Excel显示异常
问题描述
我有一个名为details.txt的文本文件,内容如下:
name class school a 1 sec b 2 pri c 3 hrsec
需要将空格分隔的值拆分为不同列,最终生成一个.csv文件。我使用了以下命令:
awk -F " " 'OFS="\t" {print $1,$2,$3 > ("output.csv")}' details.txt
但在Excel中打开输出文件时,所有值都显示在同一列中。
问题原因
你用OFS="\t"设置了制表符作为输出分隔符,但文件后缀是.csv——Excel默认会以逗号作为CSV文件的列分隔符解析,所以制表符分隔的内容会被识别成同一列。
解决方案
生成标准的逗号分隔CSV文件即可解决这个问题,修改awk命令如下:
方案1:生成标准逗号分隔CSV(保留空行)
awk 'OFS="," {print $1,$2,$3}' details.txt > output.csv
注:awk默认会将连续空格视为单个分隔符,所以-F " "可以省略。
方案2:过滤空行后生成CSV
如果不需要保留原文件中的空行,可添加字段数量判断:
awk 'NF > 0 {OFS=","; print $1,$2,$3}' details.txt > output.csv
这样生成的output.csv是符合CSV规范的文件,Excel打开时会自动将内容拆分到对应列中。
内容的提问来源于stack exchange,提问作者priya darshini
相关产品推荐
相关产品推荐

