【问题标题】:How do I get a selection from the output of a grep如何从 grep 的输出中获得选择
【发布时间】:2014-04-10 21:31:33
【问题描述】:

我在一个文件中有以下文本:

<img id="img_1" style="display: none" src="Logs/P2P2014-04-10_14-24-49.txt"/></span></div></div><script type="text/javascript">document.getElementById('duration').innerHTML = "Finished in <strong>1m31.846s seconds</strong>";</script><script type="text/javascript">document.getElementById('totals').innerHTML = "1

我想要做的是获取 src 之后的东西,即Logs/P2P2014-04-10_14-24-49.txt。我尝试了以下方法并将其放入 ruby​​ 左右的变量中:

我试过了:

text = `grep 'Logs\/.*txt\"'`

但这会返回整个该死的行,而不仅仅是文本。我该如何完成这项工作?

【问题讨论】:

  • 接受的答案并不正确,考虑是否有多个Logstxt在同一行。

标签: ruby regex shell replace


【解决方案1】:

尝试使用

text=$(grep -o 'Logs\/.*txt\"')

它应该只返回匹配的部分。

【讨论】:

    【解决方案2】:

    使用Nokogiri,看看解决问题有多容易:

    require 'nokogiri'
    
    doc = Nokogiri::HTML.parse <<-html
    <img id="img_1" style="display: none" src="Logs/P2P2014-04-10_14-24-49.txt"/></span></div></div>
    html
    
    doc.at('#img_1')['src'] # => "Logs/P2P2014-04-10_14-24-49.txt"
    

    阅读tutorials以了解和学习Nokogiri。

    【讨论】:

      【解决方案3】:

      使用 sed

      sed -n 's/.*src="\([^"]*\)".*/\1/p' file
      

      如果支持 -P 选项,则使用 gnu grep

      grep -Po '(?<=src=")[^"]*' file
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-03-29
        • 1970-01-01
        • 1970-01-01
        • 2020-04-29
        • 1970-01-01
        • 1970-01-01
        • 2014-06-24
        • 1970-01-01
        相关资源
        最近更新 更多