0

1つずつ処理したいファイルを含むディレクトリがあり、各出力は次のようになります。

==== S=721 I=47 D=654 N=2964 WER=47.976% (1422)

次に、出力を AWK にパイプして、平均パーセンテージ (列 6) を計算します。これをすべて 1 つのスクリプトで行うことを希望し、次のコードを記述しました。

for f in $dir; do
    echo -ne "$f "
    process $f
done | awk '{print $7}' | awk -F "=" '{sum+=$2}END{print sum/NR}'

これを数回実行すると、多くの場合、異なる結果が得られますが、私の見解では実際には何も変わりません。ただし、結果はほとんど常に正しくありません。

ただし、forループをスクリプトに入れ、コマンド ラインで AWK にパイプするだけでは、結果は常に同じで正しいものになります。

違いは何ですか? また、スクリプトを変更して正しい結果を得るにはどうすればよいですか?

4

2 に答える 2

0
# To get the percentage of all files
Percs=$(sed -r 's/.*WER=([[:digit:].]*).*/\1/' *)

# The divisor
Lines=$(wc -l <<< "$Percs")

# To change new lines into spaces
P=$(echo $Percs)

# Execute one time without the bc. It's easier to understand
echo "scale=3; (${P// /+})/$Lines" | bc
于 2013-11-27T18:17:58.113 に答える