저는 Linux 세계를 처음 접했고 도움이 필요합니다. 두 개의 파일이 있습니다.
다음 문자열을 포함하는 token.txt 파일:xd2111Vf124FfmrfJ22fag
다음을 포함하는 재생목록.m3u 파일:
EXTM3U
EXTINF:-1,Channel 1
EXTVLCOPT:network-caching=1000
http://myurl.com/index.m3u8?token=nd2451SVf124dfKwJ22sds
EXTM3U
EXTINF:-1,Channel 2
EXTVLCOPT:network-caching=1000
http://myurl.com/index2.m3u8?token=nd2451SVf124dfKwJ22sds
이 파일의 모든 토큰 값을 업데이트되는 token.txt 파일의 내용으로 바꾸려면 어떻게 해야 합니까? 모든 답변에 감사드립니다...
bash 스크립트를 만들고 나중에 crontab을 사용하여 자동화하고 싶습니다.
답변1
사용 sed
:
sed "/^http/s/=.*/=$(<token.txt)/" playlist.m3u
주어진 예에서 이것은 생성됩니다
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
이 sed
명령은 먼저 다음으로 시작하는 모든 줄을 찾은 http
다음 =
해당 줄 중 첫 번째 줄 뒤의 모든 내용을 파일 내용으로 바꿉니다 token.txt
(파일에는 한 줄에 새 태그만 포함되어야 합니다).
이는 $(<token.txt)
쉘이 대체의 대체 부분 내에서 명령 대체를 확장하도록 허용함으로써 달성됩니다. 그러면 파일 내용이 sed
표현식에 삽입됩니다.
파일을 제자리에서 업데이트하려면 sed
해당 -i
옵션을 사용하거나 출력을 새 파일로 리디렉션하고 이름을 바꿉니다.
sed "/^http/s/=.*/=$(<token.txt)/" playlist.m3u >new && mv new playlist.m3u
^
from을 제거하면 처음뿐만 아니라 ^http
줄의 어느 곳에서나 sed
보입니다 . URL 앞에 데이터가 더 있으면 삭제하세요.http
^