AWK - 正の値と負の値を別々の変数として合計します。

AWK - 正の値と負の値を別々の変数として合計します。

CSV次のファイルがあります。

2019.04.15;3.75;
2019.04.29;-5.17;
2019.05.01;7.5;
2019.05.06;0.5;
2019.05.13;0.25;
2019.05.20;-8.5;

2番目の列のplus合計値の合計を取得したいと思います。minus

私は以下をpipe使ってawkこの問題を解決しましたgrep

plus=$(awk -F';' '{print $2};' "$file" |
      grep --invert-match "-" |
      awk '{s+=$1}END{print s}'
)

minus=$(awk -F';' '{print $2};' "$file" |
      grep "-" |
      awk '{s+=$1}END{print s}'
)

私は彼がコマンドを使って自分でそれを行うことができると確信していますawk。質問はそれがどのように見えるでしょうか?

ベストアンサー1

追加する:

awk -F';' '$2~/^[^\-]/{s+=$2} END{print s}'  data

減らす:

awk -F';' '$2~/^[\-]/{s+=$2} END{print s}'  data

おすすめ記事