URLの値を変更する

URLの値を変更する

私はLinuxの世界に初めて触れ、助けが必要です。 2つのファイルがあります。

次の文字列を含む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(ファイルには1行に新しいタグのみを含める必要があります)。

これは$(<token.txt)、シェルが置換の代替部分内で命令置換を拡張できるようにすることによって達成される。これにより、ファイルの内容が式sedに挿入されます。

ファイルを適切に更新するには、そのsedオプション-iを使用するか、出力を新しいファイルにリダイレクトして名前を変更します。

sed "/^http/s/=.*/=$(<token.txt)/" playlist.m3u >new && mv new playlist.m3u

^fromを削除すると、最初だけでなく行^httpのどこにでもsed表示されます。 URLの前にデータがある場合は削除してください。http^

関連情報