awkを使用して絶対値を取得するには?

awkを使用して絶対値を取得するには?

次の2つの日付がある場合:

2015-09-12,2015-08-13

その間の日数を求めなければなりません。次のコードを使用します。

awk -F'[-,]' '{print 360*($4-$1)+30*($5-$2)+($6-$3)}'

このコードの出力はであり-29、実際の違いは次のとおりです。29

ベストアンサー1

awk次のように関数を定義できます。

awk -F'[-,]' '
  function abs(v) {return v < 0 ? -v : v}
  {print abs(360*($4-$1)+30*($5-$2)+($6-$3))}'

または:

  function abs(v) {v += 0; return v < 0 ? -v : v}

戻り値を負と正の標準形式に変換し、文字列は常に数値に変換されます。これがなければabs($0)入力レコードの位置が1e2生成され1e2、 の場合には-1e2生成されます-100

おすすめ記事