以下是 csv 文件示例:
12354506.0,4
13129229.0,4
815612,5
7624107.0,5
6056548.0,5
第一列中的尾随零在 CSV 查看器上被格式化为孔号。
有没有可以选择尾随零的选项?
我可以通过在第一列添加单引号前缀来添加尾随零。但单引号看起来很奇怪。
'12354506.0,4
'13129229.0,4
'815612,5
'7624107.0,5
'6056548.0,5
答案1
由于 CSV 查看器软件似乎能够通过包含小数部分来检测浮点数,因此必须将数字转换为至少有一位小数。
一种方法是awk
:
awk -F, -vOFS="," '$1 == int($1) { $1 = sprintf("%.1f", $1) } 1' file >newfile
这将测试第一个逗号分隔字段以查看它是否是整数。在这种情况下,它将将该字段重写为n.0
(其中n
是原始数字)。代码中的尾随1
将导致输出所有行。
结果写入新文件newfile
。
类似的解决方案使用sed
:
sed 's/^\([0-9]*\),/\1.0,/' file >newfile
在这里,我们匹配紧跟逗号的任意数量的数字,并将其替换为相同的数字.0
和逗号。这将忽略已经有小数部分的数字,但会添加.0
到没有小数部分的数字。
答案2
这纯粹是您正在使用的 CVS 查看器的行为。我可以使用 MS Excel 重现同样的问题。
awk -F "," '{print "=\""$1"\","$2}' test.csv > test3.csv
=
将强制数据为文本。
编辑文件。
echo "$(awk -F "," '{print "=\""$1"\","$2}' test.csv)" > test.csv
答案3
参考回答。
awk -F "," 'BEGIN {OFS = FS}{$1="=\""$1"\""; print}' test.csv
我们可能不知道 csv 中有多少个字段。声明要打印的每个字段非常困难。因此我们可以更好地编辑所需的字段。