Shell-Bash 스크립트 [닫기]

Shell-Bash 스크립트 [닫기]
fld=$(mediainfo Fixing\ One\ of\ Linux\'s\ Biggest\ Flaws.mp4 | awk -F " : " 'NR==10 {print $2}'); 
mkdir "$fld"

mediainfo의 출력에서 ​​Performer를 얻으려고 합니다. 10행에는 다음이 포함됩니다.

Performer                                : The Linux Cast

이 파일에는 "The Linux Cast" 자체가 필요합니다. bash 스크립트에서는 작동하지 않습니다. 인라인 파일 구분 기호를 설정했지만 중괄호 확장이 실패했습니다. youtube-dl을 사용하여 파일을 다운로드하고 mediainfo를 사용하여 읽습니다.

코드가 셸에서 작동하지 않는 이유를 이해하지 못합니다. 아마도 sed나 다른 핵심 유틸리티를 사용해야 할 것 같습니다.

콘텐츠 작성자별로 파일을 정리해보세요.

답변1

줄 번호에 의존하지 말고 다음과 일치하십시오 Performer.

fld=$(
  mediainfo "Fixing One of Linux's Biggest Flaws.mp4" |
    sed -n 's/^Performer[[:space:]]*:[[:space:]]*//p'
)

또는 GNU를 사용하십시오 grep:

fld=$(
  mediainfo "Fixing One of Linux's Biggest Flaws.mp4" |
    grep -Po '^Performer\s*:\s*\K.*'
)

또는 다음을 사용하십시오 exiftool.

fld=$(
  exiftool -q -p '$Artist' "Fixing One of Linux's Biggest Flaws.mp4"
)

관련 정보