grep
一种强大的文本搜索工具,它能使用正则表达式匹配模式搜索文本,并把匹配的行打印出来
格式:
grep [options] pattern file
常见参数
- -w:word 精确查找某个关键词 pattern
- -c:统计匹配成功的行的数量
- -v:反向选择,即输出没有没有匹配的行
- -n:显示匹配成功的行所在的行号
- -r:从目录中查找pattern
- -e:指定多个匹配模式
- -f:从指定文件中读取要匹配的 pattern
- -i:忽略大小写
grep Biotrainee -r ./
less Data/example.gtf
less -S Data/example.gtf | grep 'gene'
less -S Data/example.gtf | grep -w 'gene'
less -S Data/example.gtf | grep -w -c 'gene'
less -S Data/example.gtf | grep -v -w 'gene'
cat >file
gene
UTR
start_codon
stop_codon
^C(Ctrl C)
less -S Data/example.gtf | grep -w -f 'gene' | less -S
正则表达式
是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
^ 行首
$ 行尾
. 换行符之外的任意单个字符
? 匹配之前项0次或者一次
+ 匹配1次或者多次
* 匹配0次或者多次
{n} 匹配n次
{n,} 匹配至少n次
{m,n} 至少m,最多n
[] 匹配任意一个
[^] 排除字符
| 或者
示例
cat readme.txt | grep '^T'
cat readme.txt | grep ')$'
cat readme.txt | grep 'f.ee'
cat readme.txt | grep 'f\?ee'
cat readme.txt | grep 're\+'
cat readme.txt | grep [bB]
sed
流编辑器,一般用来对文本进行增删改查
用法:
sed [-options] 'script' file(s)
常见参数
- -n :禁止显示所有输入内容,只显示经过sed处理的行(常用)
- -e :直接在命令模式上进行 sed 的动作编辑,接要执行的一个或者多个命令
- -f :执行含有 sed 动作的文件
- -r :sed 的动作支持的扩展正则(默认基础正则)
- -i :直接修改读取的文件内容,不输出。
cat readme.txt | sed '1i Welcome to Biotrainee() '
cat readme.txt | sed '1a Welcome to Biotrainee() '
cat readme.txt | sed '1c Welcome to Biotrainee()
cat readme.txt | sed '/^$/d'
cat readme.txt | sed 's/is/IS/g'
cat readme.txt | sed '1 s/ee/EE/g'
cat readme.txt | sed '1~3 s/ee/EE/'
cat readme.txt | sed '/www/ s/ee/EE/'
cat readme.txt | sed 'y/abc/ABC/'
cat readme.txt | sed -n '/ee/p'
cat readme.txt | sed -n 's/ee/EE/p'
awk
也称gawk,是一门独立的编程语言,可对文本和数据进行处理。 常见参数:-F,fields,设置字段分隔符;
用法:
awk [options] '{script}' file
常见格式
- 基础结构: ‘ {script} ‘
- 匹配结构: ‘ /pattern/{script} ‘
- 扩展结构: ‘BEGIN{script} {script} END{script}’
# 基本用法
less -S Data/example.gtf
less -S Data/example.gtf | cut -f 9 | less -S
less -S Data/example.gtf | awk '{print $9}' | less -S
less -S Data/example.gtf | awk '{print $9,$10}' | less -S
less -S Data/example.gtf | awk -F '\t' '{print $9}' | less -S
# 扩展结构
less -S Data/example.gtf | awk '/UTR/{print $0}' | less -S
less -S Data/example.gtf | awk 'BEGIN{print "find UTR feature"} /UTR/{print $0} END{print "end"}'
less -S Data/example.gtf | awk 'BEGIN{FS="\t"} {print $9}' | less -S
less -S Data/example.gtf | awk 'BEGIN{FS="\t"} {print NR,$9}' | less -S
# 条件和循环
less -S Data/example.gtf | awk '{if($3=="gene") {print $0} }' | less -S
less -S Data/example.gtf | awk '{if($3=="gene") {print $1,$2,$3} }' | less -S
less -S Data/example.gtf | awk '{for(i=1;i<4;i++){print $i} }' | less -S
less -S Data/example.gtf | awk '{for(i=1;i<4;i++){print $i} }' | paste - - - | less -S
# 运算和字符处理
less -S Data/example.gtf | awk '/exon/{print $5-$4}' | less -S
less -S Data/example.gtf | awk '{print $5/$4}' | less -S
less -S Data/example.gtf | awk '{print int($5/$4) }' | less -S
less -S Data/example.gtf | awk '{print int($5/$4 + 0.5) }' | less -S
less -S Data/example.gtf | awk 'BEGIN{FS="\t";OFS="\t"} {gsub("gene","Gene",$3);print $0}' | less -S