Shell-Script

將值列從正數轉換為負數

  • September 28, 2022

我有一個 XYZ 文件,大多數 Z 值是正的,但實際上應該是負的。我想將第三列中的所有正值轉換為負值(保持值已經為負值相同)。

我對編碼非常陌生,並嘗試了一些事情,包括:

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

任何幫助是極大的讚賞!謝謝!

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

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使用指定欄位寬度(在本例中為 8)awk的格式生成輸出。%8s所以不要得到這樣的輸出:

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

你會得到:

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

如果您對提供格式不感興趣,可以更改%8s%s

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

引用自:https://unix.stackexchange.com/questions/718972