译自 http://lh3lh3.users.sourceforge.net/biounix.shtml
很多生物信息(以下简称: 生信)工作者知道如何使用 Perl 或者 Python 分析数据. 然而, 有些人并没有意识到编程有时并不是必要的. 有些情形下, 使用 UNIX 自带的命令会更加便利, 可以节省大量不必要的无聊等待时间. 这里列出我在数据分析过程中经常会使用到的一些 UNIX 命令, 结合实例介绍他们最有用的一些功能, 而不是全功能科普.
Xargs
Xargs 是我最常用到的 UNIX 命令, 悲剧的是很多 UNIX 使用者忽视了这家伙的强大.
- 删除目录下所有以
txt
为后缀的文件find . -name "*.txt" | xargs rm
- 打包目录下所有
pl
后缀文件find . -name "*.pl" | xargs tar -zcf pl.tar.gz
- 杀死所有
something
匹配到的进程ps -u `whoami` | awk '/something/{print $1}' | xargs kill
- 将所有
txt
重命名为bak
find . -name "*.txt" | sed "s/\.txt$//" | xargs -i echo mv {}.txt {}.bak | sh
- 重复运行某程序
N
次(以 bootstraing 为例)perl -e 'print "$_\n"for(1..100)' | xargs -i bsub echo bsub -o {}.out -e {}.err some_cmd | sh
- 按行提交一个脚本中的所有命令(每行一个命令)
cat my_cmds.sh | xargs -i echo bsub {} | sh
后三个例子只工作在 GNU 版的 xargs, BSD xargs 不支持
-i
参数
Find
在一个目录中查找满足指定条件的所有文件. 你可以写出更复杂的命令, 不过我觉得以下的例子会更有用(常用):
- 找到所有以
txt
为后缀的文件(包括子目录)find . -name "*.txt"
- 查找所有目录
find . -type d
Awk
Awk 是一个专门用来快速处理空格相隔数据的编程语言. 尽管它的所有功能你都可以用 Perl 实现, 但在很多实际应用场合 awk 会更简单. 你可以找到很多关于 awk 的在线指南. 这里我只列出一些我自己常用的例子.
筛选出所有第三列大于第五列的行
awk '$3 > $5' input.txt > output.txt
筛选出2, 4, 5列内容
|
|