将列值从正数转换为负数

将列值从正数转换为负数

我有一个 XYZ 文件,大多数 Z 值都是正值,但实际上应该是负值。我想将第三列中的所有正值转换为负值(保持已经为负值的值相同)。

我对编码非常陌生,并且尝试过一些事情,包括:

 awk $3 > 0 ? -1 * $3 : $3 InputFileName.txt > OutputFileName.txt

任何帮助是极大的赞赏!谢谢!

答案1

awk '$3>0{$3 *= -1} 1' file

答案2

您可以使用以下命令解决它:

awk '{ if($3>0){ printf "%8s%8s",$1,$2 ; printf "%8s\n",$3*-1 } else printf "%8s%8s%8s\n",$1,$2,$3 }' InputFileName.txt > OutputFileName.txt

通过printfthrough ,输出将以指定字段宽度的awk格式生成(在本例中为 8)。%8s因此,不要得到这样的输出:

10 20 -40
34 -4 -4
1 1 -2

你会得到:

      10      20     -40
      34      -4      -4
       1       1      -2

如果您对给出格式不感兴趣,可以更改%8s%s

相关内容