【问题标题】:perl bash script outputing inputperl bash脚本输出输入
【发布时间】:2017-11-21 00:27:32
【问题描述】:

我正在尝试学习 bash 脚本。作为练习,我得到了 Google 涂鸦的 Alt 文本和 URL。

我坚持使用 perl 来解析链接 URL。我让它找到并输出 alt 文本和 url,但它也输出整个网页。当我将它放入 shell 时,它会做同样的事情。

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

我怎样才能让它停止输出网页。

请注意,我尝试将它们分开以确保它是 perl 对页面输出所做的事情,而不是 curl 的事情。这绝对是 perl 的一部分。如果有更好的方法可以做到这一点,请告诉我。目标是输出涂鸦的替代文本和 URL。

【问题讨论】:

    标签: bash perl


    【解决方案1】:

    这是一种丑陋的做事方式,但如果您打印网页中已进行替换的每一行,它可能会起作用

    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="([^"]+)"/'
    

    但这两者都依赖于(除其他外)出现在一行上的开头&lt;img&gt; 标记的所有内容,这不一定是真的。他们还将报告页面中具有altsrc 属性的每个 &lt;img&gt; 元素的内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多