이 명령은 mp3 형식이라는 파일에 대해 다음 출력을 제공합니다 mid3v2 -l someFile.mp3
.someFile.mp3
IDv2 tag info for someFile.mp3
APIC=cover front, (image/jpg, 52016 bytes)
TALB=someAlbumName
TCON=amusicGenre
TDRC=2000
TIT2=songname
TPE1=singer
TPE2=singer
TRCK=1
t
추가 처리를 위해 TPE1의 값을 변수에 저장하고 싶습니다 . 어떻게 해야 하나요?
답변1
이 질문에 답하는 방법은 여러 가지가 있습니다.
첫 번째 단계는 명령의 출력이 파이프를 통해 다른 명령으로 수신되거나 변수에 캡처될 수 있다는 것을 이해하는 것입니다.
cmd | next command ... etc
var=$(cmd)
선을 선택하고 기호 뒤에 오는 것을 추가로 선택하는 과정을 =
"텍스트 처리"라고 하며 쉘은 이에 적합하지 않습니다.
일반적인 방법은 sed입니다.
$ mid3v2 -l someFile.mp3 | sed -En 's/^TPE1=(.*)$/\1/p'
Singer
그리고 결과를 변수에 캡처합니다.
$ t=$(mid3v2 -l someFile.mp3 | sed -En 's/^TPE1=(.*)$/\1/p')
$ echo "$t"
Singer
단순 셸에는 간단한 등가물이 없습니다. 정규식은 상위 셸(ksh, bash, zsh)에서 사용할 수 있습니다. 어떤 종류의 쉘을 사용합니까?
답변2
쉘이 "프로세스 대체"를 제공하는 경우 결과를 "소싱"해 볼 수 있습니다.
. <(mid3v2 -l someFile.mp3 | grep -o "[^ ]*=[^ ]*")
t=$TPE1