我有一个 .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 ""
}