텍스트 파일을 배열로 읽어 들이고 요소를 추출하고 정렬하는 데 시간이 오래 걸립니다.배열에서 문자열을 정렬하는 데 오랜 시간이 걸립니다.
텍스트 파일은 R128 오디오 분석을위한 ffmpeg 콘솔 출력입니다. 가장 높은 M과 S 값을 얻어야합니다. 예 : 텍스트 파일이 긴 오디오 파일의 지속 시간에 따라 라인의 수백 또는 수천 수 있습니다
[Parsed_ebur128_0 @ 0x7fd32a60caa0] t: 4.49998 M: -22.2 S: -29.9 I: -27.0 LUFS LRA: 9.8 LU FTPK: -12.4 dBFS TPK: -9.7 dBFS
[Parsed_ebur128_0 @ 0x7fd32a60caa0] t: 4.69998 M: -22.5 S: -28.6 I: -25.9 LUFS LRA: 11.3 LU FTPK: -12.7 dBFS TPK: -9.7 dBFS
내가 가장 높은 M (-22.2)와 S 값을 찾기 위해 (-28.6)를 원하는
을 분석하고 내가 현재 사용하고 어떤 변수 M 및 S
이것은에 할당 :
ARRAY=()
while read LINE
do
ARRAY+=("$LINE")
done < $tempDir/text.txt
for LINE in "${ARRAY[@]}"
do
echo "$LINE" | sed -n ‘/B:/p' | sed 's/S:.*//' | sed -n -e 's/^.*M://p' | sed -n -e 's/-//p' >>/$tempDir/R128M.txt
done
for LINE in "${ARRAY[@]}"
do
echo "$LINE" | sed -n '/M:/p' | sed 's/I:.*//' | sed -n -e 's/^.*S://p' | sed -n -e 's/-//p' >>$tempDir/R128S.txt
done
cat $tempDir/R128M.txt
M=($(sort $tempDir/R128M.txt))
cat $tempDir/R128S.txt
S=($(sort $tempDir/R128S.txt))
이 일을 더 빠른 방법이 있나요?
예. 하나는 보통 속도를 위해 bash 스크립트로 작성하는 것을 선택하지 않습니다. 적절한 perl 스크립트조차도 아마 여기에 상당한 속도 개선 명령을 줄 것입니다, 특히 정규 표현식 처리로 볼 때 그렇습니다. – davmac