一种强大的文本搜索工具,它能使用正则表达式匹配模式搜索文本,并把匹配的行打印出来
格式:grep options pattern file
常见参数:
-w:word 精确查找某个关键词 pattern less -S Data/example.gtf | grep -w 'gene' ##匹配文件中含有gene的文字
-c:统计匹配成功的行的数量 less -S Data/example.gtf | grep -w -c 'gene' ##统计含有gene的行的数量
-v:反向选择,即输出没有没有匹配的行less -S Data/example.gtf | grep -w -v -c 'gene' ##统计没有gene的行的数量
-n:显示匹配成功的行所在的行号
-r:从目录中查找pattern ##-r后面接的是文件目录,不能接其他的
-e:指定多个匹配模式 less -S Data/example.gtf | grep -w -e 'gene' -e 'exon' ##查找gene或者exon,有几个关键词,写几个-e
-f:从指定文件中读取要匹配的 pattern
cat >file
gene
UTR
start_codon
stop_codon
^C(Ctrl C)
less -S Data/example.gtf | grep -w -f 'file' | less -S
##可以将想要查找的关键词存到一个文件中,再按照文件查找
-i:忽略大小写
是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
^ 行首 ##cat readme.txt | grep '^T' 查找以T开头的行
$ 行尾 ##cat readme.txt | grep ')$' 查找以)结尾的行
. 换行符之外的任意单个字符 ##cat readme.txt | grep 'f.ee' 查找f ee 中间由任意字符组成的关键词
? 匹配之前项0次或者一次 ##cat readme.txt | grep 'f\?ee' "\"表示转义,让系统识别?为正则表达式,而非字符?
##也可写成 cat readme.txt | grep -E 'f?ee'
+ 匹配1次或者多次 ##cat readme.txt | grep 're\+'
* 匹配0次或者多次 ## cat readme.txt | grep 're*' *不需要转义
{n} 匹配n次
{n,} 匹配至少n次
{m,n} 至少m,最多n
[] 匹配任意一个 ##cat readme.txt | grep [bB] 查找b或者B
[^] 排除字符 ##[^Tt] ## 查找除了T和t的文字
| 或者 ##cat Data/example.gtf | grep -E 'UTR|exon' 查找UTR或者exon 使用的时候加上 -E 进行正则表达式转义
sed:流编辑器,一般用来对文本进行增删改查(对打印到标准输出流中的文件进行处理)
sed 以行为单位处理
用法:sed -options 'script' file(s)
常见参数:## [-optioons]
-n :禁止显示所有输入内容,只显示经过sed处理的行(常用)
-e :直接在命令模式上进行 sed 的动作编辑,接要执行的一个或者多个命令
-f :执行含有 sed 动作的文件
-r :sed 的动作支持的扩展正则(默认基础正则)
-i :直接修改读取的文件内容,不输出。
用法中的 'script' 中 包括 address command
生信技能树
生信技能树
sed 命令中,执行多步-e操作时,每一步的行数都是原文件的行数
cat readme.txt | sed '1i Welcome to Biotrainee() ' ## 在文本的第一行前面加Welcome to Biotrainee()
cat readme.txt | sed '1,3i Welcome to Biotrainee() ' ##在文本的第一行到第三行每一行前面都加一句Welcome to Biotrainee()
cat readme.txt | sed '1a Welcome to Biotrainee() ' ## 在文本的第一行后面加Welcome to Biotrainee()
cat readme.txt | sed '1c Welcome to Biotrainee() '
cat readme.txt | sed '/^$/d' ## /^$/ 这在正则表达式中指空行,这个sed命令是删除文本中的空行
cat readme.txt | sed 's/is/IS/g' ## g表示全局替换global,是[flags]的一个参数,默认值为1,表示每行的第一个匹配到的字符串进行替换
cat readme.txt | sed '1 s/ee/EE/g'
cat readme.txt | sed '1~3 s/ee/EE/' ##第一行开始,每隔3行(1,4,7)中的第一个ee替换成EE
cat readme.txt | sed '/www/ s/ee/EE/' ##现在address位置进行匹配,匹配www的行,将这行的ee改成EE
cat readme.txt | sed 'y/abc/ABC/' ##将所有小写abc更换成大写ABC
cat readme.txt | sed -n '/ee/p'
cat readme.txt | sed -n 's/ee/EE/p'
使用sed命令取一个.fa文件中单行序列的反向互补序列
head -2 Data/example.fa | sed '1d' | sed '2,$ y/ACGT/TGCA/' | rev
使用sed命令取多行序列的反向互补序列
head Data/example.fa | sed '1d' | sed '2,$ y/ACGT/TGCA/' | rev | tac
也称gawk,编程语言,可对文本和数据进行处理
生信技能树
常见参数:-F,fields,设置字段分隔符;
-v,var=value 定义awk程序中的一个变量及其默认值
用法: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
生信技能树
less -S Data/example.gtf | awk '/UTR/{print $1,$3,$5,$6,$7}' | head ##awk命令中,可以实现查找特定匹配的行并输出某几列数据,$表示哪一列
常见符号
通配符
正则表达式
生信技能树 >>追加是指可以在文件中添加内容,不会覆盖该文件
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。