URL의 값 바꾸기

URL의 값 바꾸기

저는 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^

관련 정보