아래 표시된 콘텐츠의 샘플 스냅샷이 포함된 .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 ""
}