以下に示すコンテンツのサンプルスナップショットを含む.txtファイルがあります。すべてのフィールド値を合計して出力する必要があります。つまり、CEPSDIST合計(MEAN)、SRMR合計などです。このためにbashスクリプトを使用したいと思います。これを行うサンプルスクリプトはありますか?
注:私はスクリプトを書いたことがありませんが、それを使用すると実験とデータ分析がはるかに高速になります。私はそれを学ぶことを期待していますが、最初から学ぶのではなく、逆さまに作業できる例で学びます。
Individual results
[0001 of 0002]
TARGET : cheb_M_10_mic_F01_sa1.wav
REFERENCE: orig_mic_F01_sa1.wav
TIMEDIFF : 0 samples (0.000 s)
CEPSDIST (MEAN): 6.96 dB
CEPSDIST (MED) : 6.74 dB
SRMR : 1.06
LLR (MEAN): 1.75
LLR (MED) : 2.00
FWSEGSNR (MEAN): -4.17 dB
FWSEGSNR (MED) : -6.12 dB
PESQ : 0.07
[0002 of 0002]
TARGET : cheb_M_20_mic_F01_sa1.wav
REFERENCE: orig_mic_F01_sa1.wav
TIMEDIFF : 0 samples (0.000 s)
CEPSDIST (MEAN): 6.75 dB
CEPSDIST (MED) : 6.50 dB
SRMR : 1.32
LLR (MEAN): 1.70
LLR (MED) : 2.00
FWSEGSNR (MEAN): -3.84 dB
FWSEGSNR (MED) : -5.82 dB
PESQ : 0.05
答え1
あなたはこれを行うことができますawk
:
extract.awk ファイルは次のとおりです。
BEGIN
{
SRMR = 0;
}
{
if($1 == "SRMR") {SRMR += $3}
}
END
{
print "SRMR sum is: " SRMR;
}
次のように使用してください。
awk -f extract.awk < your_data_file
編集する:
すべてのフィールドが同じ方法で抽出されるわけではありません。 awkを使用してファイルを解析する方法を理解するには、次のデフォルトのデバッグファイルを使用できます。
# debug.awk
{
print "For line '" $0 "'"
print "$1 is '" $1 "'"
print "$2 is '" $2 "'"
print "$3 is '" $3 "'"
print "$4 is '" $4 "'"
print "$5 is '" $5 "'"
print "$6 is '" $6 "'"
print ""
}