2020.2.13|Linux 线上课程第二讲
-
文本处理三驾马车
-
grep
- grep -v 反向选择输出没有匹配的行
- grep -n 显示匹配成功的行所在的行号
- grep -c 统计匹配成功的行的数量
- grep -w 完全匹配
- grep -o 只输出匹配的内容
- grep -f 从文件中读取 pattern
- grep -e 指定多个匹配模式
-
sed (address )
- sed -n 禁止显示所有的输入内容,只显示经过sed处理的行
- sed -e 直接在命令列模式上进行sed的动作编辑
- sed -f 执行含有sed动作的文件
- sed -r sed的动作支持的扩展正则
- sed -i 直接修改读取的文件内容,不输出
-
sed (command)
- sed '//p' 打印
- sed '//d' 删除
- sed '//i' 在目标行之前插入新行
- sed '//a' 在目标行之后插入新行
- sed '//c' 替换
- sed '//w' write
- sed '//r' read
- sed '//=' 打印行号
-
sed (command)
-
s 匹配替换
s/pattern/replacement/[flags]
- 数字:新文本替换第几处模式匹配的文本
- g:新文本将替换所有匹配到的文本
- p:原先行的内容将打印出来
- w file:将替换的结果写到文件中
-
y 转换
y/inchars/outchars
sed 'y///'
sed '2y/ATCG/atcg' 指定第二行
sed '/^>/!y/ATCG/atcg/' 以>开头的行不替换
sed '/^[ATCG]/y/ATCG/atcg/' 以ATCG开头的行都替换
-
sed 与其他命令的替换
- sed ' ' = cat
- sed '10 q' = head
- sed -n '/pattern/p' = grep
- sed -n '/pattern/p!' = grep -v
-
-
awk (文本分析语言)
- awk '{print$0}' example.gtf 输出整个文本行
- awk '{print$1}' example.gtf 输出文本行中的第一个数据字段
- awk '{print$2}' example.gtf 输出文本行中的第二个数据字段
-
awk (支持判断)
awk '{if(判断条件){}else{}}'
eg:
awk '{if ($1 == "chr1"){print("yes")}\
else{print("no")} }' example.gtf
-
-
三驾马车 实战演练
-
gtf格式文件 gene transfer format 主要是用来对基因进行注释
-
格式内容
- seq_id:序列的编号,一般为chr或者scanfold编号
- source: 注释的来源,一般为数据库或者注释的机构,如果未知,则用点“.”代替
- type: 注释信息的类型,比如Gene、cDNA、mRNA、CDS等
- start:该基因或转录本在参考序列上的起始位置
- end: 该基因或转录本在参考序列上的终止位置
- score: 得分,数字,是注释信息可能性的说明,可以是序列相似性比对时的E- values值或者基因预测是的P-values值,“.”表示为空
- strand: 该基因或转录本位于参考序列的正链(+)或负链(-)上
- phase: 仅对注释类型为“CDS”有效,表示起始编码的位置,有效值为0、1、2
- attributes:一个包含众多属性的列表,格式为“标签=值” (tag=value),标签与值之间以空格分开,且每个特征之后都要 有分号;(包括最后一个特征),其内容必须包括gene_id和 transcript_id。以多个键值对组成的注释信息描述,键与值之间用 “=”,不同的键之间用“;”隔开
-
实战练习
根据gencode的gtf格式的基因注释文件得到人所有基因的染色体坐标
-
awk '!/^#/{print$0}' gencode.v33.annotation.gtf|awk '($3=="gene" && /protein_coding/){print$1,$4,$5,$14}' |sed 's/"//g;s/;//g' |less -SN