2016-08-19 3 views
0

私は4つの産業用フリーザーからの温度読み取り値を格納する4つのファイルから整数を引き出すスクリプトを作成しようとしていますが、これは私が望む一般的な読み取り値を生成する趣味スクリプトです私は温度の読み取り値の合計を生成しようとする私はファイルに次のプリントアウトを取得し、私の目標は、垂直の形式で印刷された個々の番号ではなく、最後のSUMを印刷することです 任意の助けが大いに評価される、ここに私のコードbashスクリプトでSUMの問題が発生する

ここ
grep -o "[0.00-9.99]" "/location/$value-1.txt" | awk '{ SUM += $1; print $1} END { print SUM }' >> "/location/$value-1.txt" 

私はお返しに

Morningtemp:17.28 
Noontemp:17.01 
Lowtemp:17.00 Hightemp:18.72 
1 
7 
. 
2 
8 
1 
7 
. 
0 
1 
1 
7 
. 
0 
0 
1 
8 
. 
7 
2 
53 
を取得していますものです

それはgrep -o "[0.00-9.99]" "/location/$value-1.txt"で、私はすでに記載されている数字を必要としないSUM、ちょうどSUM合計

+2

cmon、 'print $ 1'を削除してください。がんばろう! – shellter

+0

は今誰もが私が23.33を取得する方法 5.90 5.90 5.53 6.00 SUM 47 – user177073

+0

まで私に言うことができます。それらの数字から答えが47となっていると言っていますか?または、入力にかかわらず47を本当にあなたの答えにしたいですか? ;-) がんばろう。 – shellter

答えて

2

正規表現を生成し[0-9.]と同等ですが、あなたはおそらく9.99の範囲0.00で数字を探しています。そのためには、別の正規表現が必要です。

grep -o "[0-9]\.[0-9][0-9]" "/location/$value-1.txt" 

これは、数字、1ドット、2桁の数字を探します。 \.の代わりに[.]を使用することがほとんど魅力的でした。それも動作します。平文は.ではありません。 0X87などの項目を選択します。

表示されたパターン([0-9]\.[0-9][0-9])は、192.16.24.2312.164.23)と2回一致することに注意してください。それがあなたが望むものでなければ、もっと正確にする必要があります。 OTOH、あなたが持っている実際のデータはわずかではありません。 192.1624.231(または.24.231)と一致させるには、正規表現を修正する必要があります。

あなたのコマンド構造:

grep … filename | awk '…' >> filename 

は危険な生きています。この例では、awkスクリプトは、grepがそれをすべて読み取るまでファイルに何も書き込まないので、「OK」です(しかし、「OK」とタイプすると、私の顔には大きな傷があります)。しかし、grepが完了する前に>>>に変更し、入力が空であるか、awkと書かれていて、突然、何が起こるかを突き詰めます(部分的にはファイルの末尾に何を書き込むかによって異なります)。 )。

2

なぜAWKに完全に固執しないのですか?コード:

$ cat > summer.awk 
{ 
    while(match($0,/[0-9]+\.[0-9]+/)) # while matches on record 
    { 
     sum+=substr($0, RSTART, RLENGTH) # extract matches and sum them 
     $0=substr($0, RSTART + RLENGTH) # reset to start after previous match 
     count++       # count matches 
    } 
} 
END { 
    print sum"/"count"="sum/count  # print stuff 

データ:

$ cat > data.txt 
    Morningtemp:17.28 
Noontemp:17.01 
Lowtemp:17.00 Hightemp:18.72 

ラン:

$ awk -f summer.awk file 
70.01/4=17.5025 

それはあまりにも冬に働くかもしれません。

+0

ありがとう、私は多くの助けに感謝します – user177073

関連する問題