awk 浮点数

Awk floating point numbers

我有一个 awk 脚本,它检查文件中的所有负值并用 abs 值更改它们。

awk 'BEGIN {OFS=FS="\t"} function abs(x) {return ((x < 0.0) ? -x : x)} { 
  for (column = 1; column <= NF; ++column) { 
    if ($column ~ /[0-9]/ && $column < 0.0) { 
      sub($column, abs($column)) 
    } 
  } 
print 
}'

在文件中,所有值都表示为浮点数,例如 -1000.0,但在我执行 awk 命令后,我得到的是 1000 而不是 1000.0。

在 sub:

上使用 mask
sub(sprintf("%d",$column), abs($column))