実験データファイルを処理するためのBashスクリプト

実験データファイルを処理するためのBashスクリプト

以下に示すコンテンツのサンプルスナップショットを含む.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 ""
}

おすすめ記事