grep

一种强大的文本搜索工具,它能使用正则表达式匹配模式搜索文本,并把匹配的行打印出来
格式:

  1. grep [options] pattern file

常见参数

  • -w:word 精确查找某个关键词 pattern
  • -c:统计匹配成功的行的数量
  • -v:反向选择,即输出没有没有匹配的行
  • -n:显示匹配成功的行所在的行号
  • -r:从目录中查找pattern
  • -e:指定多个匹配模式
  • -f:从指定文件中读取要匹配的 pattern
  • -i:忽略大小写
  1. grep Biotrainee -r ./
  2. less Data/example.gtf
  3. less -S Data/example.gtf | grep 'gene'
  4. less -S Data/example.gtf | grep -w 'gene'
  5. less -S Data/example.gtf | grep -w -c 'gene'
  6. less -S Data/example.gtf | grep -v -w 'gene'
  7. cat >file
  8. gene
  9. UTR
  10. start_codon
  11. stop_codon
  12. ^C(Ctrl C)
  13. 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