前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux - awk

Linux - awk

原创
作者头像
用户10328045
发布2023-02-18 14:40:24
3.6K0
发布2023-02-18 14:40:24
举报
文章被收录于专栏:R语言小白

生信技能树学习笔记

image.png
image.png

在读取一行文本时,会用预定的字段分隔符划分每个数据字段,并分配给一个变量

默认的字段分隔符是任意空白字符(如空格或制表符),也可以用 -F 参数自定义分隔符

  • $0 代表整个文本行
  • $1 代表文本行中的第1个数据字段 ......
  • $NF 代表文本行中的最后一个数据字段
代码语言:{r setup, include =FALSE}
复制
less -S Data/example.gtf | cut -f 9 | head
less -S Data/example.gtf | awk -F '\t' '{print $9}' | less -S ## 此时指定分隔符为制表符

如果不指定

代码语言:{r setup, include =FALSE}
复制
cat Data/example.gtf | awk '{print $9,$10}' | head ## 中间用空格连接
cat Data/example.gtf | awk '{print $9$10}' | head ## 直接连接
cat Data/example.gtf | awk '{print $9"@"$10}' | head
cat Data/example.gtf | awk '{print $9"\t"$10}' | head

匹配模式

代码语言:{r setup, include =FALSE}
复制
cat Data/example.gtf | awk '/UTR/{print $0}' | less -S
cat Data/example.gtf | awk '/UTR/{print $1,$3,$4,$5,$7}' | head ## 可以按照输入的顺序输出

扩展模式

代码语言:{r setup, include =FALSE}
复制
less -S Data/example.gtf | awk 'BEGIN{print "find UTR feature"} /UTR/{print $0} EBD {print "end"}' | less -S

awk内置变量

  • FS:定义输入字段分隔符,Field Separator,同 -F
  • RS:定义输入记录分隔符,Record Separator
  • OFS:定义输出字段分隔符,Field Separator
  • ORS:定义输出记录分隔符,Record Separator
  • NF:数据文件中的字段综述,可以简单理解为列数
  • NR:已处理的输入记录数,可以简单理解为行数
代码语言:{r setup, include =FALSE}
复制
# 设置OFS以定义输出字段分隔符
cat Data/example.gtf | awk ' BEGIN{OFS=":"}{print $3,$4,$5}' | head
image.png
image.png
代码语言:{r setup, include =FALSE}
复制
## 使用NR来打印行号
cat Data/example.gtf | awk 'BEGIN{FS="\t"; OFS=":"} {print NR,$9}' | head -5

awk 条件和循环语句

image.png
image.png
代码语言:{r setup, include =FALSE}
复制
##判断第三列是否是基因
cat Data/example.gtf | awk '{if($3=="gene") print $0}' | head -1
代码语言:{r setup, include =FALSE}
复制
## 判断第三列是否是基因,如果不是输出is not gene
less -S Data/example.gtf | awk '{if($3=="gene"){print $0} else{print $3 "is not gene"}}' | head
代码语言:{r setup, include =FALSE}
复制
## 输出每行的第1-3个
less -S Data/example.gtf | awk '{for(i=1;i<4;i++){print $i}}' | less -S
## 可以通过paste拼回去
less -S Data/example.gtf | awk '{for(i=1;i<4;i++){print $i}}' | less -S | paste - - -

可以进行运算

image.png
image.png
代码语言:{r setup, include =FALSE}
复制
## 匹配外显子并计算长度
cat Data/example.gtf | awk '/exon/{print $5-$4+1}' | head

练习

image.png
image.png
代码语言:{ r setup, include = FALSE}
复制
head Data/example.gtf | less -NS | awk '/ENSEMBL/{print $0}' | less -NS

less -NS Data/example.gtf | awk '{print $10,$12,$14}' | head | sed 's/"//g'| tr -d ';'

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 匹配模式
  • 扩展模式
  • awk内置变量
  • awk 条件和循环语句
  • 练习
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档