我有一个文本文件0test.txt
,其中包含以下代码片段。 (它有几个 http 和 https url 链接,但这些行将其单独列出)
player.setup({
file: 'http://website.com/site/myStream/playlist.m3u8?wmsAuthSign=c2VydmVyXs',
width: "100%",
aspectratio: "16:9",
});
我可以运行一个sed
命令:
cat /tmp/0test.txt | sed -n -e "/^ *file: */ { s/^ *file: *'//; s/', *$//p}"
并取回正确的 URL 链接:
http://website.com/site/myStream/playlist.m3u8?wmsAuthSign=c2VydmVyXs
但是当文件0test.txt
看起来像这样时:
player.setup({
file:
'http://website.com/site/myStream/playlist.m3u8?wmsAuthSign=c2VydmVyX3RpbWU9MTIvNC8yMDE5IDk6MTY6NTggUE0maGFzaF92YWx1ZT16RXpiUWowQ0V4TDJER3ExQnFZTEd3PT0mdmFsaWRtaW51dGVzPTM2MCZzdHJtX2xlbj0w',
width: "100%",
aspectratio: "16:9",
aspectratio: "16:9"
});
我没有得到任何回报。我怎样才能解决这个问题?
对于这种特定情况,
grep
可能更有用。第一步,line:
搜索流行语并将以下行添加到输出中。grep
然后使用并最终sed
删除尾随的单引号和逗号来选择 URL 本身:在您的正则表达式中,您允许在冒号后使用任意数量的空格字符(“文件:*”)。您可能希望将其扩展为一般的空白字符(“\s”),以便将换行符和制表符视为“像空格一样”。
快速修复。
该行将以某种方式转换文件,以“file:”结尾的每一行(末尾有或没有额外的空格)将与后面的行合并。
这样,文本
将转变为
现在你可以使用你的旧方法了。