Shell-Script
將值列從正數轉換為負數
我有一個 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