正则表达式从html标签中提取(视频)名称

时间:2011-03-02 19:20:53

标签: regex bash sed grep

我有一个网页,其中包含以下代码段,其中包含指向视频的链接:

<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下载它们。

非常感谢!

5 个答案:

答案 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=