如何在 CSV 中添加尾随零

如何在 CSV 中添加尾随零

以下是 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 中有多少个字段。声明要打印的每个字段非常困难。因此我们可以更好地编辑所需的字段。

相关内容