美文网首页生信相关Biostar Handbook学习小组
Linux常用的命令及初窥正则表达式--The learning

Linux常用的命令及初窥正则表达式--The learning

作者: Hypdoctor | 来源:发表于2017-10-28 00:41 被阅读68次

    Linux常用的命令

    目录操作命令

    • ls 显示目录文件

    ls -al
    -a 显示所有文件,包括.及..
    -l 详细信息
    -d 显示目录本身的信息,而不看目录下的内容
    -i 显示文件i nodes

    • mkdir 目录创建命令

    mkdir -p ~/abc/def 同时创建目录abc及子目录def
    -p 递归创建,可同时递归创建多个目录

    • cd 变换进入目标目录

    cd ~ 代表进入家目录
    cd ..返回上一级目录

    • rmdir 删除空目录

    rmdir [dir] 目标目录必须为空目录才能删除,否则报错
    rm -r [dir] 删除目录(包括空与非空目录)

    • pwd 输出当前目录

    pwd

    文件操作命令

    • cp 文件或目录复制命令;复制的同时支持修改文件名
      cp [源文件] [目标文件]

    -r 复制目录
    -p 保留文件属性

    • mv 剪切文件、重命名
      mv [源文件] [目标文件]
    • rm 删除文件或目录

    -r 删除目录
    -f 强制执行

    • touch 创建空文件
      touch filename
    • cat 显示文件内容(不适合文件分屏查看)
      cat filename

    -n显示行号

    • more 分页显示文件内容
      more filename
    • head 显示文件内容头几行

    -n 制定行数 (默认显示头10行)

    压缩及解压缩命令

    • .gz Linux下最常用的压缩格式
      命令:gzip(压缩),gunzip|gzip -d(解压缩)

    压缩后不保留源文件

    • tar Linux下的压缩命令不能压缩目录,只能压缩单个文件,那么如果需要压缩目录需要对目录先进行打包
      tar [打包后的文件名] [需要打包的目录]

    通常我们下载的文件或安装包文件名大部分以.tar.gz结尾,解压缩的命令可用 tar -zxvf filename 压缩生成.tar.gz的文件可用tar -cxvf filename.tar.gz filename
    -c: 建立压缩档案
    -x:解压
    -t:查看内容
    -r:向压缩归档文件末尾追加文件
    -u:更新原压缩包中的文件
    这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。
    下面的参数是根据需要在压缩或解压档案时可选的。
    -z:有gzip属性的
    -j:有bz2属性的
    -Z:有compress属性的
    -v:显示所有过程
    -O:将文件解开到标准输出
    如果是tar.bz2结尾的文件则用一下命令解压
    tar -xjvf filename.tar.bz2
    压缩命令
    tar -cjf filename.tar.bz2

    "|"管道符

    将上一个命令的标准输出结果作为下一个命令的标准输入

    实例演示

    创建目录~/biostarhandbook/lec03
    mldir -p ~/biostarhandbook/lec03
    进入目录
    cd biostarhandbook/lec03
    下载文件:SGD_features.tab及SGD_features.README

    wget https://downloads.yeastgenome.org/curation/chromosomal_feature/SGD_features.tab
    wget https://downloads.yeastgenome.org/curation/chromosomal_feature/SGD_features.README
    

    查看目录下文件
    ls -l

    总用量 3192

    -rw-rw-r-- 1 *** *** 1557 11月 19 2014 SGD_features.README
    -rw-rw-r-- 1 *** *** 3264490 1月 14 2017 SGD_features.tab

    显示当前所在目录
    pwd
    将两个文件打包并压缩为gz格式

    cd ..
    tar -czvf lec03.tar.gz lec03
    ls
    # lec03  lec03.tar.gz
    

    解压缩
    tar -xzvf lec03.tar.gz
    查看SGD_features.tab
    more SGD_features.tab
    cat命令查看文件
    cat SGD_features.tab
    用wc命令查看SGD_features.tab文件的行数、字数、字符数
    cat SGD_features.tab | wc

    将cat命令的标准输出做为wc的标准输入
    16454 425719 3264490

    如果仅需查看行数
    cat SGD_features.tab | wc -l

    16454

    查看文件的头10行
    cat SGD_features.tab | head

    grep与正则表达式

    在初步学习了grep之后,觉得grep类似与我们常用的文本程序下的查找与替换工具,且支持了强大正则表达式,所以grep的功能变得非常强大。

    grep

    grep过滤来自一个文件成标准输入匹配模式的内容,是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
    具体的参数可用man grep查看

    实例演示

    查找SGD_features.tab文件匹配“YAL060W”的行
    cat SGD_features.tab | grep YAL060W

    grep -i pattern files :不区分大小写地搜索。默认情况区分大小写,
    grep -l pattern files :只列出匹配的文件名,
    grep -L pattern files :列出不匹配的文件名,
    grep -w pattern files :只匹配整个单词,而不是字符串的一部分(如匹配’magic’,而不是’magical’),
    grep -C number pattern files :匹配的上下文分别显示[number]行,
    grep pattern1 | pattern2 files :显示匹配 pattern1 或 pattern2 的行,
    grep pattern1 files | grep pattern2 :显示既匹配 pattern1 又匹配 pattern2 的行。
    grep -n pattern files 即可显示行号信息
    grep -c pattern files 即可查找总行数
    grep -v pattern files 查找不包含匹配项的行

    查看不包含Dubious的总行数
    cat SGD_features.tab | grep -v Dubious | wc -l

    15737

    输入与输出的重定向

    Linux的标准输入输出

    设备 设备文件名 文件描述符 类型
    键盘 /dev/stdin 0 标准输入
    显示器 /dev/stdout 1 标准输出
    显示器 /dev/stderr 2 标准错误输出

    输出重定向

    类型 符号 作用
    标准输出重定向 命令>文件 以覆盖的方式
    命令>>文件 以追加的方式
    标准错误输出重定向 错误命令 2>文件 以覆盖的方式
    错误命令 2>>文件 以覆盖的方式

    实例演示

    如何将匹配得到的行输出为文件。grep命令默认的标准输出的显示器,即为/dev/stdout,要保存为文件,需要将输出重定向>
    cat SGD_features.tab | grep YAL060W > match.tab
    ls

    match.tab SGD_features.README SGD_features.tab

    查看match.tab
    more match.tab

    查看匹配gene的行数
    cat SGD_features.tab | grep gene | wc -l

    2093

    利用cut命令截取第二列中匹配ORF的行
    先查看第二列的头10行
    cat SGD_features.tab | cut -f 2 | head

    -d : 指定字段分隔符,默认是制表符
     -f :指定要显示的字段
     -f1 :显示第一个字段
     -f 1,3 显示第一个和第三个
     -f 1-3 显示第一个到第三个
     -b : 截取字节数
     -c : 截取字符

    cat SGD_features.tab | cut -f 2 | grep ORF | head
    查看匹配的总行数
    cat SGD_features.tab | cut -f 2 | grep ORF | wc -l
    同时截取多列
    cat SGD_features.tab | cut -f 2,3,4 | grep ORF | head
    去除含有Dubious的行
    cat SGD_features.tab | cut -f 2,3,4 | grep ORF | grep -v Dubious | wc -l
    上述命令如用awk实现

    cat SGD_features.tab | awk '{print $2}' | grep ORF | head
    cat SGD_features.tab | awk '{print $2,$3,$4}' | grep ORF | head
    

    截取第二列保存为type.txt文件
    cat SGD_features.tab | cut -f 2 > type.txt
    对type.txt条目进行连续排序并查看头10条
    cat type.txt | sort | head
    将相同的条目显示为1个
    cat type.txt | sort |uniq | head
    显示重复条目的个数
    cat type.txt | sort | uniq -c | head
    显示条目的种类
    cat type.txt | sort | uniq -c | wc -l

    正则表达式

    bash的正则表达式包括基础正则表达式扩展正则表达式,它用来匹配预期要求的字符串。
    基础正则表达式:

    符号 描述
    . 匹配除换行符以外的单个字符
    ^ 匹配前面字符串的开头
    $ 匹配前面字符的结尾
    * 匹配前一个字符的0或多个
    [] 匹配中括号中的任意一个字符
    [a-z][0-9][A-Z] 匹配范围内的任意一个字符
    [^] 匹配除中括号内的字符以外的字符
    {n}{n,} 匹配大括号前面字符至少n个字符
    {n,m} 匹配大括号前面字符至少n个字符,最多m个字符
    < 边界符,匹配字符串开始
    > 边界符,匹配字符串解释

    扩展正则表达式:

    符号 描述
    + 匹配前一个字符的1个或多个
    ? 匹配前一个字符的0个或多个
    |
    () 单元或组合

    sed及awk

    目前还学习,感觉好难理解,尤其是awk,真的是一门编程语言。等待日后完善吧。

    相关文章

      网友评论

        本文标题:Linux常用的命令及初窥正则表达式--The learning

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