
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
答え2
$ set -f; IFS=" "
$ set $(perl -F\; -lane '$A[$F[1]<0] += $F[1]}{print "@A"' "$file")
$ plus=$1 minus=$2
答え3
別のawk
解決策:
awk -F\; 'BEGIN {plus=0;minus=0}
{if ($2>0) plus+=$2; else minus+=$2; }
END {minus=-minus; print plus minus}' input_filename