我正在使用 awk 简单地更改文件中的某些文本,同时保持文件中当前的值。
问题是一些值正在发生变化。如果我使用%f
-,这些值将保持不变,但是我想消除不必要的尾随零。使用 时,大多数值都可以实现这一点%g
,但这%g
会导致一些值转换为科学数字,而这并不是我想要的。
有没有办法既能将数字打印到新文件中而不带尾随零,又能不将任何数字转换为科学计数法?
例子:
当我将以下内容应用到我正在更改的文件时,使用%f
:
(rline == 4) {printf("%f\t %s\n",$1,"gsurf_intercept")}
其结果是:
1000000.000000 gsurf_intercept
当我使用该%g
选项时:
(rline == 4) {printf("%g\t %s\n",$1,"gsurf_intercept")}
其结果是:
1e+06 gsurf_intercept
我想要的是:
1000000 gsurf_intercept
另外,我将其应用于要更改的文件中 70 行,我希望生成的文件产生两列,每列对齐。我发现并非每个项目都与上方或下方的项目对齐 - 当第一列中的项目是字符串并且我使用%s
它时会发生这种情况。
答案1
您可以将浮点数转换为整数并打印。没有尾随零,您可以使用格式代码 %d 或 %ld 进行打印。
我认为将 %f 更改为 %d 可能会解决问题,而无需明确进行转换(即让 printf 进行转换)。