第一条perl单行命令---获取blastdb所有数据库的下载地址
Posted 潇湘蘑菇
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第一条perl单行命令---获取blastdb所有数据库的下载地址相关的知识,希望对你有一定的参考价值。
进入blastdb数据库的ftp下载页面(ftp://ftp.ncbi.nih.gov/blast/db/),页面信息如下:
按F12进入开发模式,获取页面源代码。页面源码截图如下:
首先,将源码文本全部拷贝下来粘贴到txt文本文档中,并将其命名为“ncbi_ftpsource.txt”。
然后在Ubuntu的bash shell命令行界面下将工作目录切换到“ncbi_ftpsource.txt”文件所在目录。通过perl单行命令,利用正则表达式匹配,对目标字段进行匹配与替换,并输出到文件。整个代码如下:
perl -ne 'print "$2\t\tftp:\/\/ftp\.ncbi\.nlm\.nih\.gov$1\n"if /.*?(\/blast\/db.+?tar\.gz)">(.+?tar\.gz)<.*/'./ncbi_ftpsource.txt >ncbi_ftpdownsites.txt
#简单介绍一下这行代码:”perl”表示调用perl语言程序,-n参数表示逐行从标准输入(键盘)或者文件读取内容;-e表示其后是可执行的脚本;print表示输出;"$2\t\tftp:\/\/ftp\.ncbi\.nlm\.nih\.gov$1\n",其中$2与$1分别为if后面正则表达式中第二个和第一个括号中匹配到的内容;./ncbi_ftpsource.txt为输入文件;>为重定向写入文件,即将程序的运行结果写入到其后的ncbi_ftpdownsites.txt(创建新文件或者覆盖原有文件)中。输出文件布局如下:
那么,获得的下载列表该怎样批量下载呢?请移步我之前介绍的一种通过wget批量下载的方法:。
其实,这条代码很简单,但是我捉摸了很久才写得自己十分满意,算是自己的第一条perl单行命令(还没学会走就想跑了)。Perl单行命令的优势在于不用保存脚本文件,直接在命令行界面运行程序,且格式简洁,特别是不必写出完整的循环、条件判断语句等,而正则表达式语法在单行命令中显得尤为重要。感兴趣的可以尝试一下。
最后还是那句,吾尝终日而思矣,不如须臾之所学也!
以上是关于第一条perl单行命令---获取blastdb所有数据库的下载地址的主要内容,如果未能解决你的问题,请参考以下文章