0

我最近问了以下关于使用 awk 进行格式转换的问题,该问题由 Ed Morton 回答。但是,我需要帮助来调整这个 awk 代码。创建文件时,awk 脚本似乎没有保留实际的整数值(包含小数),而是向下舍入到最接近的整数。有没有办法修改此脚本以保留数据集中的实际值。

例如:

church place 3.43
church institution 6.92
man place 86.39
man food 63.39
woman book 37.04

变成

@relation 'filename'
@attribute "place" string
@attribute "institution" string
@attribute "food" string
@attribute "book" string


@data
3,6,0,0,church
86,0,63,0,man
0,0,0,37,woman

代替

@relation 'filename'
@attribute "place" string
@attribute "institution" string
@attribute "food" string
@attribute "book" string


@data
3.43,6.92,0,0,church
86.39,0,63.39,0,man
0,0,0,37.04,woman

有没有办法可以更改此响应中的 awk以包含实际值,而不仅仅是四舍五入到最接近的整数?

4

1 回答 1

1

打印数值时使用 %g 或 %s 而不是 %d,例如:

printf "%g,", score[row,attr]

或者

printf "%s,", score[row,attr]+0

请注意,使用 %s 时需要添加零,以便将空字符串转换为数字零。

于 2013-09-30T12:23:43.200 回答