Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用awk编辑文本文件

如何使用awk编辑文本文件
EN

Stack Overflow用户
提问于 2018-02-12 13:31:25
回答 3查看 63关注 0票数 0

我有一个类似以下示例的文本文件:

代码语言:javascript
运行
AI代码解释
复制
>chr1:368597-368634
ATGATATAATAAGCCCTTCTCATTAAACATGATATGG
>chr1:879533-879955
GGTTGCCGGGGGTAGGGGTGGGGCCACACAAATCTCCAGGAGCCACCACTCAACACAATGGCCCTGCCTCCCACCGCTTTATTTCTTTCGGTTTCGGATGCAAA
ACAAAAAATTTTAAAAGAAAATGTGACTTCAAAGGAAAGGAACAAATTTTCAAAGACTTGGGGGAGTGAAGGCAGAGCCTGGTGCAGATGGACGAGGTCTGCAG
GCCTGT
>chr1:879533-879955
GGTTGCCGGGGGTAGGGGTGGGGCCACACAAATCTCCAGGAGCCACCACTCAACACAATGGCCCTGCCTCCCACCGCTTTATTTCTTTCGGTTTCGGATGCAAA
GCCTGT
>chr1:879533-879639
GGTTGCCGGGGGTAGGGGTGGGGCCACACAAATCTCCAGGAGCCACCACTCAACACAATGGCCCTGCCTCCCACCGCTTTATTTCTTTCGGTTTCGGATGCAAA
AC

每组的第一行是以>开头的ID,下一行是一个字符序列。在第二行中,我想保留最后的29个,删除其余的。所以输出应该是这样的:

代码语言:javascript
运行
AI代码解释
复制
>chr1:368597-368634
ATAAGCCCTTCTCATTAAACATGATATGG
>chr1:879533-879955
GTGCAGATGGACGAGGTCTGCAGGCCTGT
>chr1:879533-879955
TTTCTTTCGGTTTCGGATGCAAAGCCTGT
>chr1:879533-879639
TTTATTTCTTTCGGTTTCGGATGCAAAAC

我如何使用awk做到这一点呢?

EN

回答 3

Stack Overflow用户

发布于 2018-02-12 13:37:32

awk解决方案:

代码语言:javascript
运行
AI代码解释
复制
awk 'r~/^>/{ print r ORS substr($0, length-28) }{ r=$0 }' a1

输出:

代码语言:javascript
运行
AI代码解释
复制
>chr1:368597-368634
ATAAGCCCTTCTCATTAAACATGATATGG
>chr1:879533-879955
GTGCAGATGGACGAGGTCTGCAGGCCTGT
>chr1:879533-879955
TTTCTTTCGGTTTCGGATGCAAAGCCTGT
>chr1:879533-879639
TTTATTTCTTTCGGTTTCGGATGCAAAAC
票数 1
EN

Stack Overflow用户

发布于 2018-02-12 13:36:13

代码语言:javascript
运行
AI代码解释
复制
awk '/^>/||$0=substr($0, length($0)-28)' file

上面的awk一行代码应该会对你有所帮助:

代码语言:javascript
运行
AI代码解释
复制
kent$  awk '/^>/||$0=substr($0, length($0)-28)' f
>chr1:368597-368634
ATAAGCCCTTCTCATTAAACATGATATGG
>chr1:879533-879955
GTGCAGATGGACGAGGTCTGCAGGCCTGT
>chr1:879533-879955
TTTCTTTCGGTTTCGGATGCAAAGCCTGT
>chr1:879533-879639   
TTTATTTCTTTCGGTTTCGGATGCAAAAC 
票数 0
EN

Stack Overflow用户

发布于 2018-02-12 13:43:04

另一个awk使用模块来决定是打印还是处理:

代码语言:javascript
运行
AI代码解释
复制
$ awk 'NR%2;!(NR%2){print substr($0,length()-28)}' file
>chr1:368597-368634
ATAAGCCCTTCTCATTAAACATGATATGG
>chr1:879533-879955
GTGCAGATGGACGAGGTCTGCAGGCCTGT
>chr1:879533-879955
TTTCTTTCGGTTTCGGATGCAAAGCCTGT
>chr1:879533-879639
TTTATTTCTTTCGGTTTCGGATGCAAAAC
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48747689

复制
相关文章
使用Atom编辑文本文件
我一般用它来编辑markdown,实时预览需要安装插件,后文会有preview插件。
pollyduan
2019/11/04
1.2K0
awk强大的文本文件处理命令
awk是一个非常强大的文本文件处理应用程序,几乎所有 Linux 系统都自带这个程序。awk其实不仅仅是工具软件,还是一种编程语言。它依次处理文件的每一行,并读取里面的每一个字段。对于日志、CSV 那样的每行具有格式相同的文本文件,awk可能是最方便的工具。使用awk可以打印出自己想要的信息。
BUG弄潮儿
2020/06/12
1.7K0
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
AWK使用
引子 zcat hnmuseum_21070701.gz|awk -F'[: ]' '{size[$3":"$4]+=$11} END{for(time in size){print time,size[time]*1.1/1024/1024}}'|sort 命令组成分三个部分:BEGIN、BODY、END BEGIN和END需要关键字进行声明,而且是命令中的可选部分,其在命令执行时之后执行一次 BODY部分不需要关键字声明,但是在命令执行时BODY部分会根据输入的行数而执行多次 awk 'BEGIN{p
码缘
2022/09/21
6780
文本文件编辑命令-cat
Linux系统中有多个查看文本的命令,每个命令都有自己的特点,比如这个cat命令就是用于查看内容较少的纯文本文件。cat这个命令也好很好记,因为cat在英语中是“猫”的意思,小猫咪是不是给你一种娇小,可爱的感觉呢? 参考实例 语法格式:cat [参数] 文件 -n 显示行数(空行也编号) -s 显示行数(多个空行算一个编号) -b 显示行数(空行不编号) -E 每行结束处显示$符号 -T 将TAB字符显示为 ^I符号 -v 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外 -e 等价于”-vE”组合
鹤川
2023/03/21
1.2K0
如何使用HBase存储文本文件
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。 Fayson的github:https://github.com/fayson/cdhproject 提示:代码块部分可以左右滑动查看噢 1.文档编写目的 ---- Fayson在前面的文章中介绍了《如何在CDH中使用Solr对HDFS中的JSON数据建立全文索引》和《如何使用Flume准实时建立Solr的全文索引》,假如我们有大量的文本文件,我们应该如何保存到Hadoop中,并实现文本文件的全文检索呢。为了介绍如何对文本文件进行全文检索,本文
Fayson
2018/07/12
3.5K0
4.文本文件编辑命令
cat命令用于查看纯文本文件(内容较少的),英文全称为“concatenate”,语法格式为“cat [参数] 文件名称”。
用户8006012
2022/05/07
1.1K0
如何在awk脚本中使用shell变量
我找到了一些将外部shell变量传递给awk脚本的方法,但是我对 ' 和 " 感到困惑。
程序熵
2023/09/25
3420
如何在awk脚本中使用shell变量
awk命令的使用
Ubuntu14.04 目的:想用awk来统计某个文本中单词出现的次数,并以一定的格式输出结构 通常,awk逐行处理文本。awk每接收文件的一行,然后执行相应的命令来处理。 用legal文件来做示例 $ cat /etc/legal The programs included with the Ubuntu system are free software; the exact distribution terms for each program are described in the indivi
AnRFDev
2021/02/01
5600
使用awk过滤行
被过滤的数据 MarkerName Allele1 Allele2 Freq1 FreqSE P-value Chr Pos rs2326918 a g 8510 0001 5255 6 130881784 rs2439906 c g 0316 0039 8997 10 6870306 rs10760160 a c 5289 0191 8107 9 123
入门笔记
2022/06/02
3.5K0
如何使用Java逐行读取大文本文件?
这是一个示例,该示例具有完整的错误处理并支持Java 7之前的字符集规范。使用Java 7,您可以使用try-with-resources语法,从而使代码更简洁。
用户7886150
2020/12/11
2.8K0
【Linux篇】--awk的使用
awk是一个强大的文本分析工具。相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。 简单来说awk就是把文件逐行的读入,(空格,制表符)为默认分隔符将每行切片,切开的部分再进行各种分析处理。
LhWorld哥陪你聊算法
2018/09/13
1.7K0
awk中NF的使用
统计机器中网络连接各个状态个数 netstat -a | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 一下子不明白$NF是什么意思,去查了下awk的用法,发现NF表示浏览记录的域的个数 awk ‘{print $1}’打印第一列 awk ‘{print $2}’打印第二列 NF表的是列数 如: a b c d e 那么NF=5 $NF就是表示第五列的值,就是一行数据最后一列的那个值 $NF就是一行数据最后一列的那个值 netstat -a
千往
2018/01/24
2.3K0
awk中NF的使用
如何使用-markdown编辑器
本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:
菲宇
2019/06/11
8780
详解流编辑器 sed 和 编程语言 awk
本文介绍了如何使用流编辑器sed和编程语言awk对文本进行编辑和处理。首先介绍了流编辑器sed,它是一种非交互式编辑器,可以用于删除、替换和插入文本。然后介绍了编程语言awk,它是一种功能强大的文本处理工具,可以用于各种文本处理任务,包括从文本中提取信息、过滤和转换文本以及处理文本数据。
s1mba
2017/12/28
1.2K0
详解流编辑器 sed 和 编程语言 awk
使用awk数组进行求和[通俗易懂]
有一个文本gamebill.txt,求出3个人累计消费的金额,按照金额的大小排序,需要使用awk的数组
全栈程序员站长
2022/09/09
2.8K0
使用awk数组进行求和[通俗易懂]
awk中使用shell变量
需求:在shell中使用awk命令时,awk会调用shell中的变量。比如根据数字for循环。 for i in `seq 1 5` do      awk '{print $$i}' filename  done 这个里面的$i按理说应该是1到5数字,但是awk中并不会识别。 那如何才能识别到呢?应该这样用: A=44; echo "ABCD" | awk -v a=$A ’{print a}’ 说明:-v选项用于定义参数,这里表示将变量A的值赋予GET_A。 有多少个变量需要赋值,就需要多少个-
老七Linux
2018/05/31
1.7K0
Linux shell awk数组使用
index-expression可以使用任意的字符串 需注意的是:如果某数组元素事先不存在,那么引用其时,awk会自动创建次元素并初始化为0,要判断某数组中是否存在某元素,需要 使用index in arrary的方式
全栈程序员站长
2022/09/09
7710
linux之awk使用技巧
打印文件的第一列 > awk '{print $1}' rumenz.txt 打印文件的前两列 > awk '{print $1,$2}' rumenz.txt 打印文件的最后一列 > awk '{print $NF}' rumenz.txt 打印文件的总行数 > awk 'END{print NR}' rumenz.txt 打印文件的第一行 > awk 'NR==1{print}' rumenz.txt NR是指awk正在处理的记录位于文件中的位置(行号) 打印文件的第3行第2列 > sed -
入门笔记
2022/06/02
5930
点击加载更多

相似问题

使用sed或awk编辑文本文件

20

如何在awk中使用多个操作来编辑文本文件

13

使用AWK编辑XML文件

11

使用awk编辑多个文件

13

使用AWK编辑csv文件

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档