用于处理实验数据文件的 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 ""
}

相关内容