bash – 读取unix和run命令中的文件列表
我是
shell脚本的新手,我一整天都在苦苦寻找如何执行“for”命令.基本上,我想要做的是以下内容:
我有一个list.txt文件,其中包含一堆名称: name1 name2 name3 对于列表中的每个名称,有两个不同的文件,每个文件的名称结尾不同.例如: name1_R1 name1_R2 我试图运行的程序叫做镰刀.基本上,它需要两个文件(彼此对应)并对它们进行分析,因此需要我有这个命名方案.镰刀命令如下: sickle pe -f input_file1.fastq -r input_file2.fastq -t sanger 如果有人可以帮助我,至少只是告诉我如何让unix读取文件列表并独立处理每一行,我想我可以从那里开始.我尝试了一些东西,但没有一个能奏效.
有几种方法可以做到这一点.由于数据文件中的名称是“每行一个”,因此我们可以假设文件名中没有换行符.
for循环 for file in $(<list.txt) do sickle pe -f "${file}_file1.fastq" -r "${file}_file2.fastq" -t sanger done while循环阅读 while read file do sickle pe -f "${file}_file1.fastq" -r "${file}_file2.fastq" -t sanger done < list.txt for循环仅在名称中没有空格(或其他空白字符,如制表符)时才有效.只要您没有名称中的换行符,while循环就是干净的,尽管使用read -r文件会为您提供更好的防范意外保护. for循环中文件名周围的双引号是装饰性的(但无害),因为文件名不能包含空格,但是while循环中的那些文件名阻止了包含空格的文件名在不应拆分时被拆分.每次使用变量时引用变量通常都是一个好主意,尽管严格来说只有当变量可能包含空格但你不希望值分开时才有意义. 我不得不猜测应该将哪些名称传递给镰刀命令,因为你的问题不清楚 – 我99%肯定我猜错了,但它匹配你的示例命令中的不同后缀,假设基本名称输入文件.我省略了尾随反斜杠;它是“逃避”角色,目前尚不清楚你真正想要的是什么. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- bash – sed / awk大写字符串
- 学习Scala 进击大数据Spark生态圈
- 即使使用Scala Test使用@PrepareForTest,PowerMockito也会抛
- AngularJS中获取ng-repeat动态生成的ng-model值
- angularjs – 使用angular-ui-bootstrap创建Hoverable popo
- angular – Alias已被“–collection”选项使用,不能被“–
- angularjs – 错误:参数不是一个函数,未定义
- 学习笔记2—bootstrap简介以环境搭建
- shell – 递归搜索IBMi IFS上目录中每个文件的目录
- PrimeNG(PrimeUI)Webpack angular2打字稿