首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Bash手动编辑文本或Fastq文件

使用Bash手动编辑文本或Fastq文件
EN

Stack Overflow用户
提问于 2015-02-16 15:52:23
回答 2查看 781关注 0票数 0

我想手动编辑一个Fastq文件使用Bash到多个类似的行。

在Fastq文件中,序列读取从第2行开始,然后每第4行(即第2行、第6行、第10行、第14行.)找到。

我想要创建一个编辑的文本文件,它与Fastq文件相同,除非顺序读取的前6个字符被修剪掉。

未经编辑的Fastq:

代码语言:javascript
复制
@M03017:21:000000000
GAGAGATCTCTCTCTCTCTCT
+
111>>B1FDFFF

编辑的Fastq:

代码语言:javascript
复制
@M03017:21:000000000
TCTCTCTCTCTCTCT
+
111>>B1FDFFF
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-16 16:22:54

GNU可以这样做:

代码语言:javascript
复制
sed -i~ '2~4s/^.\{6\}//' file

address 2~4的意思是“从第2行开始,重复每4行”。

s的意思是替换,^匹配行开始,.匹配任何字符,\{6\}指定长度(“量词”)。替换字符串为空(//)。

-i~将文件替换到位,留下附加到文件名后的~备份。

票数 1
EN

Stack Overflow用户

发布于 2015-02-16 15:57:31

我想awk在这方面是完美的:

代码语言:javascript
复制
$ awk 'NR%4==2 {gsub(/^.{6}/,"")} 1' file
@M03017:21:000000000
TCTCTCTCTCTCTCT
+
111>>B1FDFFF

这将删除4k+2位置中所有行中的前6个字符。

解释

  • 如果记录的数量(行数)在4k+2表单上,则NR%4==2 {}会做一些事情。
  • gsub(/^.{6}/,"")将第6个字符替换为空字符串。
  • 1计算为True,打印该行。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28545286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档