Absolute value in awk doesn't work?

前端 未结 4 883
臣服心动
臣服心动 2021-01-07 19:56

I want to select line of a file where the absolute value of column 9 is less than 500. Column is sometimes positive, sometimes negative.

awk -F\'\\t\' \'{ if         


        
4条回答
  •  清酒与你
    2021-01-07 20:00

    There is a loss of precision using sqrt($9^2). That might be a problem if you want to print the absolute value as well.

    Solution: process as text, and simply remove the leading minus sign, if present.

    This guarantees that the output matches the input exactly.

    Code:

    awk '{sub("^-", "", $9); if ($9 < 500) print $9}' inputfile
    

    Summary: to get absolute value using awk, simply remove the leading minus (-) character from a field, if present.

提交回复
热议问题