• ベストアンサー

ファイル内の数字を計算したい、たし算。

unix初心者です。 grep とcutで file1に 56 23 168 6 とか、入れた場合、これのtotalを計算するとき、 どのようなコマンドラインになるのでしょうか? これを変数にして、rate と掛け算したいのです。 どうも思い浮かばなくて、よろしくお教えください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

純粋にコマンドラインかどうかあれですが、 awk '{sum+=$1}END{print sum}' file1 説明は file1から1行ずつ読み込んで、最初の1つ目の値($1)をsumという変数に加算していきます。すべての行を読み終わったら最後にsumを表示するという内容です。awkというツールを使用していますが、たいていのUNIX互換OSには入っています。 もし、何かの処理の最中に入れたいのであれば、 前処理 | awk・・・ |後処理 等パイプにも対応しています。 まあ、一行でやりたいならこういう方法もあるということで・・・ ちなみに、数字以外の行が来た場合処理させないようにするには、 awk '/[0-9]+/{sum+=$1}END{print sum}' file1 とすると、正規表現で[0-9]+(数字1文字以上からなる文字列からなる行)のみ{sum+=$1}の処理の対象とします。 awkやsedは最近のUNIX管理者の中には使えない人も多いかもしれませんが、かなり便利に使えますよ。

glotte
質問者

お礼

回答ありがとうございました。 awkは使ったことがありませんでした。 これから勉強してみます。

その他の回答 (1)

  • pakuti
  • ベストアンサー率50% (317/631)
回答No.1

あまり深く考えずに書きました・・・・ #!/bin/sh for num in `cat file1`; do tot=`expr $tot + $num` done echo $tot

glotte
質問者

お礼

回答ありがとうございました。 ヒントになりました。

関連するQ&A