O comando mid3v2 -l someFile.mp3
fornece a seguinte saída para um arquivo com nome someFile.mp3
no formato 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
Gostaria de armazenar o valor de TPE1 em uma variável t
para processamento posterior. Como posso fazer isso?
Responder1
Há muitas maneiras de responder a essa pergunta.
O primeiro passo é entender que a saída de um comando pode ser recebida por outros comandos através de um pipe, ou pode ser capturada em uma variável:
cmd | next command ... etc
var=$(cmd)
O processo para selecionar uma linha e selecionar o que vem depois do sinal =
é chamado de "processamento de texto" e o shell não é adequado para isso.
Uma maneira comum de fazer isso pode ser sed:
$ mid3v2 -l someFile.mp3 | sed -En 's/^TPE1=(.*)$/\1/p'
Singer
E capture o resultado para uma variável:
$ t=$(mid3v2 -l someFile.mp3 | sed -En 's/^TPE1=(.*)$/\1/p')
$ echo "$t"
Singer
Não existe um equivalente simples dentro de um shell simples. Em shells superiores (ksh,bash,zsh) é possível usar regex. Qual concha você usa?
Responder2
Dado que seu shell fornece "substituição de processo", você pode tentar "fornecer" o resultado:
. <(mid3v2 -l someFile.mp3 | grep -o "[^ ]*=[^ ]*")
t=$TPE1