不会编程,如何进行批量操作
想要批量完成工作,又不想学习编程怎么办,其中一个好办法就是花钱找人帮忙,谈钱伤感情,那还是学习一些技能吧,下面介绍不会编程如何进行批量操作。
通配符“*”
通配符是批量操作中最重要的内容,通配符代表任何数据的内容,例如想要查看#
#显示出当前目录下所有以.fq.gz结尾的文件,就可以使用通配符
ls-1*.fq.gz
#删除当前目录下所有以.log结尾的文件
rm-rf*.log
管道符“|”
管道操作符是批量操作中另一个比较重要的符号,管道的作用顾名思义,它是用来改变数据流的方向,默认数据流方向为屏幕输出,而管道的作用是将数据流导入另外的程序,作为它的输入文件。
#搜索当前目录下所有一点fna结尾的文件,然后删除掉。
find./ -name*.fna| xargs rm
#搜索当前目录下所有一点fna结尾的文件,然后打包压缩。
find ./ -name"*.fna"| xargs tar -zcf genome.tar.gz
sed
sed作为流文本处理器,可以用于批量替换,可以用于批量修改文件中的内容。
$ grep">"K12.ffn| head -3
>gi|
556503834|ref|NC_000913.3|:4636007-4636696 Escherichia coli str. K-12 substr. MG1655, complete genome
>gi|
556503834|ref|NC_000913.3|:4636696-4638120 Escherichia coli str. K-12 substr. MG1655, complete genome
>gi|
556503834|ref|NC_000913.3|:4638178-4639530 Escherichia coli str. K-12 substr. MG1655, complete genome
#删除掉Escherichia coli 以及后面所有内容
$ grep ">" K12.ffn |
sed -e's/ .*//g'|head -3 # 注意其中空格
>gi|
556503834|ref|NC_000913.3|:190-255
>gi|
556503834|ref|NC_000913.3|:337-2799
>gi|
556503834|ref|NC_000913.3|:2801-3733
awk批量生成脚本
awk是Linux下强大的文本处理工具,本身也是一门编程语言,awk可以批量生成脚本。现有5个样品,每个样品有两个测序文件,_1.fq.gz与_2.fq.gz,需要进行同样的处理,需要批量生成脚本,每个脚本只有样品名部分不同,类似与word中的邮件合并功能。
$ ls-1*.fq.gz |sed'N;s/\n/ /g'|awk'{print "fastqc -f fastq -o result " $1,$2}'
fastqc -f fastq -o result a_1.fq.gz a_2.fq.gz
fastqc -f fastq -o result b_1.fq.gz b_2.fq.gz
fastqc -f fastq -o result c_1.fq.gz c_2.fq.gz
fastqc -f fastq -o result d_1.fq.gz d_2.fq.gz
fastqc -f fastq -o result e_1.fq.gz e_2.fq.gz
for循环
这里for循环已经属于编程的内容了,要想进行批量操作,最好还是学编程。从NCBI下载nt库包含67个文件,每个文件配有一个md5校验文件,现在需要利用md5sum对每个文件进行校验;
#使用awk对当前目录下所有tar.gz文件生成校验脚本
$ ls -1 *.gz.md5 |wc
67 67 1139
$foriin*.gz.md5;domd5sum -c$i;done;
nt.00.tar.gz: OK
nt.01.tar.gz: OK
nt.02.tar.gz: OK
---------- END ----------
欢迎订阅我们的微信公众号:基因学苑