![将列值从正数转换为负数](https://linux22.com/image/211328/%E5%B0%86%E5%88%97%E5%80%BC%E4%BB%8E%E6%AD%A3%E6%95%B0%E8%BD%AC%E6%8D%A2%E4%B8%BA%E8%B4%9F%E6%95%B0.png)
我有一个 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
通过printf
through ,输出将以指定字段宽度的awk
格式生成(在本例中为 8)。%8s
因此,不要得到这样的输出:
10 20 -40
34 -4 -4
1 1 -2
你会得到:
10 20 -40
34 -4 -4
1 1 -2
如果您对给出格式不感兴趣,可以更改%8s
为%s