管道卷曲输出到grep

时间:2016-04-06 17:23:52

标签: bash search curl grep cygwin

只是一点免责声明,我对编程不是很熟悉所以请原谅我,如果我错误地使用任何条款/以混乱的方式。

我希望能够从网页中提取特定信息,并尝试通过将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函数的结果导出到文本文件中。

非常感谢任何帮助,提前谢谢!

1 个答案:

答案 0 :(得分:17)

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

来抑制进度表

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

$ 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