美文网首页生物信息学
linux数据流处理技巧

linux数据流处理技巧

作者: wo_monic | 来源:发表于2019-08-28 20:58 被阅读0次
    创建基于当前日期的文件
    mkdir result-$(date +%F)   //生成result-2019-08-28格式的文件
    
    把一个命令的输出结果嵌入另一个命令里
    ``等价于$()  把要引用的值的命令放在``或$()内
    grep -c '^>' maize.fa
    echo "this file total have `grep -c '^>' maize.fa` sequence.
    echo "this file total have $(grep -c '^>) maize.fa` sequence.
    
    程序前后台运行

    & nohup screen
    mv test1 test2 & 程序后台运行

    程序运行后,按下CTRL+Z暂停程序,可以用如下的命令分别置程序于后台或前台运行。

    bg %1 进程1后台运行
    fg %1 进程1前台运行

    或者是nuhup

    nuhup会向标准输出流的文件前面加上nohup的log信息,有些后续程序在运行nohup挂起的输出文件时,可能会因为头部的多余信息而报错

    screen

    screen是新开的屏幕,可以把screen挂起到后台继续运行

    常规程序pipeline

    echo analysis start at $(date +%x_%X)   #输出程序开始的时间
    mkdir programe_result-$(date +%F)   #创建格式为程序名+日期格式的文件
    nohup porgrame  2>./result-$(date +%F)/error-`date +%X` & #后台运行程序,同时将错误输出流重定向到上面新建的文件,以error+时间来命名。
    
    
    程序的进程控制用于链式编程

    &&前一个执行成功后,再执行后一个程序。
    ||前一个执行失败后,再执行后一个程序。

    ls -l nide.xs && find -a "^>" mide.fa ##前一个程序成功就执行后续命令
    cd test || mkdir test   ##前一个命令执行错误时,执行后一个命令。
    

    例1:如果想把工作目录移到运行环境的result目录,如果不存在则创建该目录
    cd result || mkdir result && cd result
    例2:如果执行某个命令出错,则报出错误位置信息。
    samtools -sort index.fa || echo "error in samtools"

    time命令

    time command1

    完整的命令例子:

    nohup time java -jar picard.jar test  2>error-`date +%F &`
    

    nohup挂起程序
    time计算程序运行时间
    2>error-`date +%F` 错误信息重定向

    路径尽量使用相对路径

    相对路径...开头的路径
    绝对路径/或字符开头的路径

    使用断点

    Python里面是assert(),而R里面是 stopifnot()

    使用正则表达式

    例如当前目录有以下文件,

    ├── NS-1.map.sam
    ├── NS-2.map.sam
    ├── NS-3.map.sam
    ├── WT-1.map.sam
    ├── WT-2.map.sam
    └── WT-3.map.sam
    

    ls -lh {NS,WT}-{1..3}.map.sam
    可以匹配到当前目录所有的文件。

    数字命名

    使用数字时尽量使用01,001代替1

    每个程序要写文档

    注意文档应该包括以下内容:

    • 程序功能、运行目录
    • 命令的所依赖的程序或包,以及对应的版本
    • 作者信息、日期
    • 脚本的每一步尽量加上注释信息
    • 在readme中说明运行目录的文件结构,自定义的特殊的文件需要说明数据类型
    变量或函数命名
    • 函数命名尽量结合功能进行命名
    • 命名格式尽量统一,驼峰命名(UesrName)或者下划线命名(user_name).根据项目组或者团队或者个人习惯统一使用一种命名法。
      个人偏向下划线命名法
    • 变量和函数的命名的字符尽量不要太长

    相关文章

      网友评论

        本文标题:linux数据流处理技巧

        本文链接:https://www.haomeiwen.com/subject/tmamectx.html