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