dポイントプレゼントキャンペーン実施中!

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

A 回答 (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管理者の中には使えない人も多いかもしれませんが、かなり便利に使えますよ。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/12/19 15:24

あまり深く考えずに書きました・・・・



#!/bin/sh

for num in `cat file1`;
do
tot=`expr $tot + $num`
done

echo $tot
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/12/19 15:22

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています