专栏名称: VG生信软件
国内首家从事Windows平台、可视化生物信息学桌面软件开发的公司。致力于提供领先的生物信息学软件产品和系统服务。产品和业务包括:微生物多样性分析软件、转录组分析软件、重测序分析软件、细菌基因组分析系统。
目录
相关文章推荐
于小戈  ·  离个婚,花了5亿 ·  昨天  
书单来了  ·  重金悬赏! ·  4 天前  
蓝钻故事  ·  张兰出事了 ·  3 天前  
51好读  ›  专栏  ›  VG生信软件

生信工作者的工具包

VG生信软件  · 公众号  ·  · 2018-02-02 18:00

正文

Linux系统在生物信息学数据处理中的重要性就不用我多说了,学会准确使用相对应的coomadns,往往可以节省很多你的时间,废话不多说,今天给大家带来一系列实用的Linux commands。

(本节内容,建立在你有一定linux的基础上)

Xargs

Xargs 可能是我见过最强大的commands,可是很多人确忽略了他强大之处。

1.删除目前所在目录下所有以txt为后缀的文件

find . -name "*.txt" | xargs rm

2.打包目前所在目录下所有pl后缀文件

find . -name "*.pl" | xargs tar -zcf pl.tar.gz

3.杀死所有something匹配到的进程

ps -u `whoami` | awk '/something/{print $1}' | xargs kill

4.将所有txt重命名为bak

find . -name "*.txt" | sed "s/\.txt$//" | xargs -i echo mv {}.txt {}.bak | sh

5.重复运行某程序N次(以 bootstraing 为例)

perl -e 'print "$_\n"for(1..100)' | xargs -i bsub echo bsub -o {}.out -e {}.err some_cmd | sh

6.按行提交一个脚本中的所有命令(每行一个命令)

cat my_cmds.sh | xargs -i echo bsub {} | sh

Find

在一个目录中查找满足指定条件的所有文件. 你可以写出更复杂的命令, 不过我觉得以下的例子会更有用(常用):

1.找到所有以txt为后缀的文件(包括子目录)

find . -name "*.txt"

2.查找所有目录

find . -type d

Cut

Cut 命令用来切割指定的列, 默认的分隔符是一个单TAB

1.切割1, 2, 3, 5, 7以及后面的列

cut -f 1-3,5,7- input.txt

2.切割得到第三列, 指定定界符为一个空格single SPACE

cut -d" " -f 3 input.txt

Sort

几乎所有的脚本语言都有内置的 Sort 函数, 但是都没有像 Sort 命令一样灵活. 此外, GNU sort 命令空间利用率也是非常高效. 我曾用不到 2GB 的内存排序一个 20GB 的文件. 如此强大的 sort 你自己实现的话会很难.

1.对以空格为定界符的文件排序, 如果第一列相同, 则比第二列, 第二列相同, 则比第三列, 以此类推

sort input.txt

2.对一个超大文件进行排序(只适用于GNU Sort)

sort -S 1500M -t $/HOME/tmp input.txt > sorted.txt

3.跳过前两列从第三列开始排序

sort +2 input.txt

4.对第二列按数字降序排列, 如果相同, 则对第三列按字符升序排列

sort -k2,2nr -k3,3 input.txt

以第二列的第四个字符按数字排序, 默认升序

sort -k2,4n input.txt

Awk

Awk 是一个专门用来快速处理空格相隔数据的编程语言. 尽管它的所有功能你都可以用 Perl 实现, 但在很多实际应用场合 awk 会更简单. 你可以找到很多关于 awk 的在线指南. 这里我只列出一些我自己常用的例子.

筛选出所有第三列大于第五列的行

awk '$3 > $5' input.txt > output.txt

筛选出2, 4, 5列内容

awk '{print $2,$4,$5}' input.txt > output.txt

awk 'BEGIN{OFS="\t"}{print $2,$4,$5}' input.txt

显示第 20 到 80 行之间的内容

awk







请到「今天看啥」查看全文