grep

强大的文本搜索工具
image.png

查找pattern 并将其以行号的形式输出

  1. grep -r 'ATAAT' . -n

image.png

精确查找gene的pattern,精确查找指的是,完全包含某个单词

``
less Data/example.gtf | grep -w ‘gene’
image.png

精确查找gene的pattern并按行输出

less example.gtf | grep -w ‘gene’ | less -SN
image.png
$ less Homo_sapiens.GRCh38.102.chromosome.Y.gff3.gz | grep -w ‘gene’ | less -SN 并没有精确拿出第三列是gene 的一行
image.png

过滤掉所有含”gene” 的行

$ less example.gtf | grep -w -v ‘gene’
image.png

统计没有“gene” 的行数

$ less example.gtf | grep -w -v -c ‘gene’

统计所有的行数,并验算

$ wc -l example.gtf
237 example.gtf

查找含有’gene’或者’UTR’的pattern

  1. less example.gtf | grep -w -e 'gene' -e 'UTR'


image.png

如何进行多个pattern的查找(>2个)

  1. cat > file
  2. UTR
  3. gene
  4. exon
  5. ^C
  6. cat example.gtf | grep -w -f file
  7. second methold
  8. less example.gtf | grep -w -f file | less -S

image.png

正则表达式

image.png

查找pattern

cat example.fa | grep -n ‘^ATATAA’

image.png

cat example.fa | grep -n ‘^ATATAA’

image.png

cat example.fa | grep -n ‘.ATATAA$’ 模糊查找

image.png

cat readme.txt | grep -E ‘f?ee’ -E的意思是正则表达式

image.png

$ cat readme.txt | grep ‘f\?ee’

image.png

cat readme.txt | grep ‘re+‘

image.png

cat readme.txt | grep ‘f*ee’

*有所不同,转E不行,不转E反而可
image.png
image.png

cat readme.txt | grep [bB]

image.png

练习题

image.png

image.png

过滤:cat example.fq | grep ‘^@’ | grep -v ‘^@ERR’

过滤掉含有“@ERR”的行
image.png

$ cat example.gtf | grep -w -E ‘CDS|UTR|exon’ | less -SN

image.png

image.png

  1. $ zcat Homo_sapiens.GRCh38.102.chromosome.Y.gff3.gz | cut -f 3 | grep -v '#' | less
  2. $ zcat Homo_sapiens.GRCh38.102.chromosome.Y.gff3.gz | cut -f 3 | grep -v '#' | less | grep -w 'gene' -c
  3. 47

image.png
image.png

sed 流编辑器,一般用来对文本进行增删改查

image.png

用法

[!]:是取反的意思
image.png
vim 中加%是对某一行进行处理
sed默认对所有行处理
image.png

cat readme.txt | sed ‘1 a Hi’

image.png

cat readme.txt |sed ‘1,2 i Hi’

image.png

$ less -SN file3 | sed ‘1d’ | less -SN

删除第一行

cat readme.txt |sed -e ‘2i Hi’ -e ‘2a Hi’

image.png

$ cat readme.txt |sed -e ‘2,4c *

更改
image.png

如何插入多行:cat readme.txt |sed -e ‘2,4c *\n*\n*

image.png

cat readme.txt |sed -e ‘s/is/IS/‘

$ cat readme.txt |sed ‘s+is+IS+’ 用别的符号代替/也可以

cat readme.txt | sed ‘1~3s/ee/EE/‘ 第一行开始每隔三行改一行

image.png

查找

记得加-n
image.png
前后替换数量必须一致
image.png
image.png

大小写替换

image.png

作业

image.png

  1. $ head example.gtf | sed 's/HAVANA/ENSEMBL/' | less -SN
  2. head example.fa | sed -n '2p' | sed 'y/ATCG/TAGC/' | rev (方向互补)

awk :编程语言,可对文本和数据进行处理

image.png
image.png
awk 只能拿出一块,但是cut 只能识别 \t (Table键)
image.png
观察:一个是空格,一个是制表符
image.png
image.png

image.png
image.png

内置变量

image.png

设置分隔符

image.png

FS定义字段分隔符

注意 双引号和单引号
image.png

从测试文件中拿出Y染色体匹配的gene(完全匹配) 的行

  1. zcat Homo_sapiens.GRCh38.102.chromosome.Y.gff3.gz | awk '{if($3=="gene")print $0}' | less -SN

image.png

FOR 循环

image.png

awk的数学运算

image.png
例如找到外显子的长度
image.png

作业