我有一个网页,其中包含以下代码段,其中包含指向视频的链接:
<a href="video.php?video=sampel1.mov">
<a href="video.php?video=anothersample.mov">
<a href="video.php?video=yetanothersample.mov">
我想使用sed和正则表达式来提取视频名称,例如:
sampel1.mov
anothersample.mov
yetanothersample.mov
所以我可以使用wget
下载它们。
非常感谢!
答案 0 :(得分:3)
尝试一下:
sed -n 's/.*video=\([^"]*\)">/\1/p' inputfile
使用GNU grep
:
grep -Po '(?<=video=).*?(?=">)' inputfile
通过xargs
:
command | xargs wget ...
答案 1 :(得分:1)
你可以做一些简单的事情,比如
grep -o 'video.php?video=[^"]\+' | sed -e 's/^video.php?video=//'
答案 2 :(得分:1)
您可以使用sed检索电影名称。
创建一个文件,例如。 movie_string.txt ,所有字符串都包含电影名称
现在,使用以下内容创建一个sed脚本文件,例如 movie_name.sed :
s/\"//g
s/<//g
s/>//g
s/\(.*=\)\([a-z]\)/ \2/
保存并退出。
现在从终端,您只需发出以下命令将结果重定向到另一个文件 movie.txt :
sed -f movie_name.sed movie_string.txt > movie.txt
答案 3 :(得分:0)
警告:使用正则表达式解析HTML / XML通常是not a good idea。相反,使用像Ruby或Python这样的语言,它具有可以智能地解释页面结构的XML解析器库。
以下是一些可能对您有帮助的问题(还有更多只是快速搜索):
<强>更新强>
在您的评论中,您提到您已经知道如何在Python中进行链接提取,但您不想使用直接调用wget
的Python脚本。你仍然可以用Python解决这个问题(这可能是最简单的解决方案,因为你已经知道如何去做)。如果您的Python脚本将提取的文件名打印到标准输出,并在每个名称后面添加换行符,则可以使用以下任一shell命令执行您想要执行的操作:
python your_script.py >filenames.txt
wget -i filenames.txt
或
python your_script.py | wget -i -
这会将脚本提取的数据传递给wget
,而不需要您的脚本通过系统调用来调用wget
。
答案 4 :(得分:0)
cat yourlinks.txt | cut -f2 -d\" | cut -f2 -d=