【问题标题】:Piping curl output into grep管道 curl 输出到 grep
【发布时间】:2016-04-06 17:23:51
【问题描述】:

只是一点免责声明,我对编程不是很熟悉,所以如果我错误地/以令人困惑的方式使用了任何术语,请原谅。

我希望能够从网页中提取特定信息,并尝试通过将 curl 函数的输出传递到 grep 来实现此目的。哦,如果重要的话,这是在 cygwin 中。

刚输入时

$ curl www.ncbi.nlm.nih.gov/gene/823951

终端以我认为是 html 的形式打印整个网页。从这里开始,我想我可以将这个输出通过管道传递到一个 grep 函数中,使用任何搜索词:

  $ curl www.ncbi.nlm.nih.gov/gene/823951 | grep "Gene Symbol"

但是终端根本没有打印网页,而是给了我:

 % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  142k    0  142k    0     0  41857      0 --:--:--  0:00:03 --:--:-- 42083

谁能解释它为什么这样做/我如何在网页中搜索特定的文本行?我最终想将基因名称、类型和描述等信息编译到数据库中,因此我希望之后将 grep 函数的结果导出到文本文件中。

非常感谢任何帮助,在此先感谢!

【问题讨论】:

    标签: bash search curl grep cygwin


    【解决方案1】:

    Curl 检测到它没有输出到终端,并向您显示进度表。您可以使用 -s 来抑制进度条。

    HTML 数据确实正在发送到 grep。但是,该页面不包含文本“基因符号”。 Grep 区分大小写(除非使用 -i 调用)并且您正在寻找“基因符号”。

    $ curl -s www.ncbi.nlm.nih.gov/gene/823951 | grep "Gene symbol"
        <dt class="noline"> Gene symbol </dt>
    

    您可能还想要下一行 HTML,您可以使用 -A 选项进行 grep 输出:

    $ curl -s www.ncbi.nlm.nih.gov/gene/823951 | grep -A1 "Gene symbol"
        <dt class="noline"> Gene symbol </dt>
        <dd class="noline">AT3G47960</dd>
    

    有关这些选项和其他选项的更多信息,请参阅 man curlman grep

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-18
      • 2016-01-31
      • 1970-01-01
      • 2014-12-17
      • 1970-01-01
      • 2021-09-10
      • 1970-01-01
      • 2012-12-01
      相关资源
      最近更新 更多