Dav*_*Xie 8 bash search grep curl cygwin
只是一点免责声明,我对编程不是很熟悉所以请原谅我,如果我错误地使用任何术语/以一种令人困惑的方式.
我希望能够从网页中提取特定信息,并尝试通过将curl函数的输出传递给grep来完成此操作.哦,如果重要的话,这是在cygwin.
刚输入时
$ curl www.ncbi.nlm.nih.gov/gene/823951
Run Code Online (Sandbox Code Playgroud)
终端打印整个网页我认为是HTML.从这里我想我可以将这个输出管道输出到一个grep函数,无论搜索词需要什么:
$ curl www.ncbi.nlm.nih.gov/gene/823951 | grep "Gene Symbol"
Run Code Online (Sandbox Code Playgroud)
但终端不是打印网页,而是给我:
% 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
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释为什么它这样做/如何在网页中搜索特定的文本行?我最终想要将基因名称,类型和描述等信息编译到数据库中,所以我希望在此之后将grep函数的结果导出到文本文件中.
非常感谢任何帮助,提前感谢!
ret*_*cus 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>
Run Code Online (Sandbox Code Playgroud)
您可能还需要下一行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>
Run Code Online (Sandbox Code Playgroud)
见man curl和man grep关于这些和其他选项的详细信息.