列値を正から負に変換

列値を正から負に変換

XYZファイルがあり、ほとんどのZ値は正数ですが、実際には負数でなければなりません。 3番目の列のすべての正の値を負の値に変換したいと思います(すでに負の値は同じままです)。

私は最初にコーディングに触れ、次のようないくつかを試しました。

 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

throughを使用すると、指定されたフィールド幅(この場合は8)の形式でprintf出力が生成されます。したがって、次のような出力を取得しないでください。awk%8s

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

あなたは得るでしょう:

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

フォーマットの提供に興味がない場合は、%8s次のように変更できます。%s

関連情報