Usando sed
:
sed "/^http/s/=.*/=$(<token.txt)/" playlist.m3u
Com o exemplo dado, isso produziria
EXTM3U
EXTINF:-1,Channel 1
EXTVLCOPT:network-caching=1000
http://myurl.com/index.m3u8?token=xd2111Vf124FfmrfJ22fag
EXTM3U
EXTINF:-1,Channel 2
EXTVLCOPT:network-caching=1000
http://myurl.com/index2.m3u8?token=xd2111Vf124FfmrfJ22fag
O comando sed
primeiro encontra qualquer linha que comece com http
e substitua tudo após o primeiro =
nessas linhas com o conteúdo do arquivo token.txt
(esse arquivo deve conter apenas o novo token em um linha).
Isso funciona permitindo que o shell expanda a substituição do comando $(<token.txt)
dentro da parte de substituição da substituição. Isso insere o conteúdo do arquivo na expressão sed
.
Para atualizar o arquivo, use sed
com sua opção -i
ou redirecione a saída para um novo arquivo e renomeie:
sed "/^http/s/=.*/=$(<token.txt)/" playlist.m3u >new && mv new playlist.m3u
A remoção de ^
de ^http
faria com que sed
procurasse http
em qualquer lugar da linha, não apenas no início. Remova ^
se você tiver mais dados em frente ao URL.