이 명령은 이름이 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