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

时间:2015-02-16 15:52:24

标签: bash fasta sequencing

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

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

我想创建一个与Fastq文件相同的编辑文本文件,除了排序测序读数的前6个字符。

未编辑的Fastq:

@M03017:21:000000000
GAGAGATCTCTCTCTCTCTCT
+
111>>B1FDFFF

编辑Fastq:

@M03017:21:000000000
TCTCTCTCTCTCTCT
+
111>>B1FDFFF

2 个答案:

答案 0 :(得分:1)

我猜awk非常适合:

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

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

解释

  • NR%4==2 {}如果记录的数量(行数)是4k + 2表格,则做事。
  • gsub(/^.{6}/,"")用空字符串替换6个第一个字符。
  • 1评估为True,打印该行。

答案 1 :(得分:1)

GNU sed可以做到这一点:

sed -i~ '2~4s/^.\{6\}//' file

地址2~4表示"从第2行开始,重复每4行"。

s表示替换,^匹配行开头,.匹配任何字符,\{6\}指定长度("量词")。替换字符串为空(//)。

-i~替换了该文件,留下了~附加到文件名的备份。