美文网首页生信相关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