Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Linux - awk

Linux - awk

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

生信技能树学习笔记

image.png
image.png

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

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

  • $0 代表整个文本行
  • $1 代表文本行中的第1个数据字段 ......
  • $NF 代表文本行中的最后一个数据字段
代码语言:{r setup, include =FALSE}
AI代码解释
复制
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}
AI代码解释
复制
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}
AI代码解释
复制
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}
AI代码解释
复制
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}
AI代码解释
复制
# 设置OFS以定义输出字段分隔符
cat Data/example.gtf | awk ' BEGIN{OFS=":"}{print $3,$4,$5}' | head
image.png
image.png
代码语言:{r setup, include =FALSE}
AI代码解释
复制
## 使用NR来打印行号
cat Data/example.gtf | awk 'BEGIN{FS="\t"; OFS=":"} {print NR,$9}' | head -5

awk 条件和循环语句

image.png
image.png
代码语言:{r setup, include =FALSE}
AI代码解释
复制
##判断第三列是否是基因
cat Data/example.gtf | awk '{if($3=="gene") print $0}' | head -1
代码语言:{r setup, include =FALSE}
AI代码解释
复制
## 判断第三列是否是基因,如果不是输出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}
AI代码解释
复制
## 输出每行的第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}
AI代码解释
复制
## 匹配外显子并计算长度
cat Data/example.gtf | awk '/exon/{print $5-$4+1}' | head

练习

image.png
image.png
代码语言:{ r setup, include = FALSE}
AI代码解释
复制
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 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Linux:让你效率起飞的三驾马车
是对字符串操作的一种逻辑公式,就是用事先 定义好的一些特定字符、及这些特定字符的组合,组成一个 “规则字符串”,这个“规则字符串”用来表达对字符串的 一种过滤逻辑。
不会写代码的医学生
2024/03/21
1520
生信分析中linux的使用7-awk
扩展结构: 'BEGIN{script} {script} END{script}'
生信菜鸟团
2024/07/10
1640
生信分析中linux的使用7-awk
生物信息学常见数据格式以及文本处理(grep/sed/awk)
-r:在整个目录进行匹配 ⚠️在这里目录必须和指令放在一起 eg:grep "gene" -r Data/ (-r和目录必须相连)
顾卿岚
2023/02/20
1.5K0
Linux学习笔记-Day13
序列行:一个字母代表一个碱基/氨基酸,为ATCGN或20种氨基酸。#N代表在测序中无法确定具体是什么碱基
用户11190095
2024/07/28
1500
Linux进阶 03 文本处理三驾马车
⭐重头戏来啦!真的很难很繁琐,每个命令下面又有许多个小参数,套娃!先记录下来以后要多看看~
可乐同学与生信死磕到底
2024/04/18
2391
生信马拉松 Day13 Linux-3笔记
实际容忍度很高,pattern写在左后,或者options写在pattern后面都可以
阿呆的月历
2024/02/04
1780
从零开始的异世界生信学习 linux部分 linux 基础---学习笔记-3 Linux三剑客 grep,sed,awk
-w:word 精确查找某个关键词 pattern less -S Data/example.gtf | grep -w 'gene' ##匹配文件中含有gene的文字
用户10361520
2023/02/21
5690
awk编程实战「建议收藏」
awk是linux及unix操作系统中非常优秀的数据及文本处理工具,它是一种编程语言 awk命令格式为:
全栈程序员站长
2022/09/14
1.4K0
linux19-详说linux文本处理(二)
继续总结一下linux 的文本处理。包括但不限于awk, sed, paste,split,grep....
北野茶缸子
2022/05/19
8770
linux19-详说linux文本处理(二)
Linux 的 awk 命令教程手册,建议收藏!
Linux 的 awk 命令相信不少人都用过,但是真正研究它的人应该不多。因为,我们多数人都是面向百度编程的。今天我们抽个时间,简单的来说一下它。
业余草
2020/02/14
1.9K0
Linux 的 awk 命令教程手册,建议收藏!
Linux-文本编辑 awk
awk pic1 图片 awk '{print $9$10}' ar402 09:16:06 ~ $ less -S Data/example.gtf | awk '{print $9$10}' | head gene_id"ENSG00000223972"; gene_id"ENSG00000223972"; gene_id"ENSG00000223972"; gene_id"ENSG00000223972"; gene_id"ENSG00000223972"; gene_id"ENSG00000223
用户10412487
2023/04/03
1.1K0
《快学BigData》--Linux awk命令详解(9)
[root@hadoop1 /]# awk ‘pattern + action’ {filename}
小徐
2023/03/06
9810
《快学BigData》--Linux awk命令详解(9)
跟萌老师学Linux的第三天
是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
贝诺酯
2023/03/23
1.1K0
Linux学习 - 常用和不太常用的实用awk命令
Linux学习系列文章是生信宝典最开始主推的一块,力图从一个新额视角帮助初学者快速入门Linux系统,熟悉Linux下的文件和目录,文件操作, 文件内容操作。而且教程摒弃了完美操作,列举出常见错误和解决方式,管道、标准输入输出解惑Linux下多种信息输出方式。 在文件排序和FASTA文件操作中简述了awk和sed的使用,作为一个引子。本篇则详细列举关于awk常用的操作和一些偏门的操作。 awk基本参数解释 awk擅长于对文件按行操作,每次读取一行,然后进行相应的操作。 awk读取单个文件时的基本语法格式是a
生信宝典
2018/02/05
1.7K0
awk详解「建议收藏」
awk是linux中处理文本的强大工具,或者说是一种专门处理字符串的语言,它有自己的编码格式。awk的强大之处还在于能生成强大的格式化报告。 awk的命令格式如下:
全栈程序员站长
2022/09/08
1.8K0
awk详解「建议收藏」
awk学习笔记
awk是一种模式扫描和处理工具,相对于grep的查找,sed的编辑,它在对数据进行分析生成报表时显得尤为强大。awk通过逐行遍历一个或多个 文件的方式,查找模式匹配到的行,而后以指定的分隔符(缺省为空格)进行切片,然后针对切片数据进行处理和分析。事实上,gawk有自己的语言,其本身就 相当于一个解释器,允许用户创建简短的程序读取输入文件,对输入数据执行排序、计算以及生成报表操作,甚至可以类似bash shell实现诸如循环、数组、条件判断、函数、变量等功能,进而完成更为复杂的数据分析处理任务。
小小科
2018/05/02
1.9K0
awk学习笔记
Linux awk 命令
AWK是一种处理文本文件的语言,是一个强大的文本分析工具。之所以叫AWK是因为其取了三位创始人Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符。
狼啸风云
2019/11/03
4.3K0
Linux-生信技能树
gff/gtf:9列,序列名字,注释来源,基因结构,起始位置,终止位置,碱基测序结果可信度,链的+向与-向,密码子偏移,其他属性
用户9966449
2023/02/16
2.1K0
Linux 三剑客之awk
目录 Linux 三剑客之awk 简介 应用场景 awk执行流程图 awk生命周期 awk内置(预定义)变量 行与列描述 取行 取列 awk中的函数 条件的分类 awk正则详细: 普通正则和awk正则区别 范围表达式 逻辑表达式 算术表达式 特殊模式BEGIN{}和END{} awk数组 awk 的 判断、循环 if循环 循环 总体练习 易错点: Linux 三剑客之awk 简介 awk主要是用来格式化文本,也有人称awk是一种语言,类似 C,awk 是三剑客的老大,利剑出鞘,必会不同凡响。 应
HammerZe
2022/03/25
6910
Linux 三剑客之awk
shell脚本快速入门之-----正则三剑客之三awk用法大全!!!
awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入、一个或多个文件,或其它命令的输出。它支持用户自定义 函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。awk的处理文本和数据的方 式是这样的,它逐行扫描文件,从第一行到最后一行,寻找匹配的特定模式的行,并在这些行上进行你想要的操作。如果没有指定处理动作,则把匹配的行显示到标 准输出(屏幕),如果没有指定模式,则所有被操作所指定的行都被处理。awk分别代表其作者姓氏的第一个字母。因为它的作者是三个人,分别是Alfred Aho、Brian Kernighan、Peter Weinberger。gawk是awk的GNU版本,它提供了Bell实验室和GNU的一些扩展。
不吃小白菜
2020/09/03
1.1K0
相关推荐
Linux:让你效率起飞的三驾马车
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档