2017-06-18 153 views
0

我在学习bash脚本。作为练习,我将获得Google涂鸦的Alt文本和网址。perl bash脚本输出输入

我一直在使用perl解析出链接URL。我找到并输出了替代文字和网址,但它也输出了整个网页。当我把它放在外壳中时它也会做同样的事情。

curl -s google.com --Location | perl -pe 's|.*<img.*alt="(.*?)".*src="(.*?)".*>.*|\1 http://google.com\2|' 

我怎样才能得到这个停止输出的网页。

请注意,我试图分开这些,以确保它是perl做输出的页面,而不是卷曲的东西。这绝对是perl的一部分。如果有更好的方法来做到这一点,让我知道。目标是输出涂鸦的替代文字和网址。

回答

2

这是一个丑陋的方式做事情,但如果你从网页里的替代已经取得

perl -ne 'print if s/<img.*alt="(.*?)".*src="(.*?)".*>/$1 http://google.com$2/' 

打印每行可以工作,但它是清洁剂来做只是一个正则表达式匹配并使用否定字符类来代替非贪婪量词

perl -ne 'print "$1 http://google.com$2\n" if /<img[^<>]+alt="([^"]+)"[^<>]+src="([^"]+)"/' 

但是这两个依赖于(除其他事项外)全部开放<img>标签出现在一行,这未必是真实的内容。他们还会在页面中每<img>元素报告的内容,该元素同时具有altsrc属性。