帮助使用 Awk 更改文件

帮助使用 Awk 更改文件

我正在使用 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 进行转换)。

相关内容