---by mk 2021-3-13 24:00本人跟着Jimmy老师学习生信已经1+年,滚爬摩打,已经入行R及Linux。近日,需要在某公共数据库 网站下载资料,打开网页是这样的: 其中需要下载的资料多达174项,根据Jimmy老师所教的,当然是批量下载啦,21世纪了,还手工一 个个点击下载,会被吐槽的!!!! 于是发现了下载规律很重要。由于下载链接不像SRA那样,只能自己通过寻找下载规律,于是乎,发现了下载有如下规律:https://wwwn./Nchs/Nhanes/1999-2000/AUX1.XPT,前缀:https://wwwn./Nchs/ Nhanes/,然后拼接年份:1999-2000,最后是文件名:AUX1.XPT。好办。 第一步:了解上图NHANES Examination Variable List,进入变量列表,多大1.6万个变量,为了后续 注释,下载下来,命名为NHANESExaminationData.txt,本人比较喜欢在Rstudio上用R 拼接,然后再 去Linux 通过bash下载。通过以下代码读进R里长这样: rm(list = ls()) 取子集,获取自己想要的拼接网址内容: tmp <- dat[,c(3,5,6)] ##去重 第二步:本人Windows下安装了ubuntu子系统,所以,可以直接打开ubuntu:cd到目标目录,本人的资料保存在桌面,并列出文件下文件: 查看downlaod_file.txt cut -d ',' -f 4 downlaod_file.txt |head 得到如下网址信息: 重定向写入url.txt,为后续bash脚本下载。 cut -d ',' -f 4 downlaod_file.txt >>url.txt 在cat查看最后构建的url文件: cat url.txt |head 得到如下结果: 第三步:一切准备就绪,剩下就交给最常用的下载方法,批量下载,构建脚本文件: #!/bin/bash (当然,也可以直接在命令行输入) 然后走 bash bash.txt 纳尼,居然报错: 细心检查发现,居然在自己构建的网址中,通过cat循环读取下载,网址末尾居然多了:%0D: 思考: 1.分析原因:构建的网址下载失败,从显示的下载链接,是因为在.XPT末尾多了%0D,那为什么构建的网址末尾会多了这些字符串呢? 2.一定是网址显示时没有把换行符显示出来,那么怎么查找linux下的换行符?搜索发现,命令如下: cat -An url.txt 发现末尾多了**^M,$**为换行符: 3.如何解决?此时,想起Jimmy老师经常教育我们菜鸟的话:(1)编程的能力就是解决问题的能力;(2)要学会自己搜索。于是乎,打开我的https://cn.bing.com/ 搜索:^M$ linux找到了:https://www.jb51.net/article/142224.htm本人尝试了第一种,先看看自己的ubuntu子系统有没有安装dos2unix命令 dos2unix --help 结果是没有安装,于是乎,尝试第二条:sed(cut、awk、sed处理字符串三大马车之一) sed-i 's/^M``//g``' url.txt 在查看cat -An url.txt,完美解决^M: 如是乎,开始了愉快的下载: 体会:发现问题很重要,一旦出现了报错,失败,一定要去找原因,并且,要有良好的思维方式。最后最后,告诉大家,紧跟Jimmy大神,可以帮助自己省力省时,提供生产力哟! 文末友情推荐 |
|