0

I would like to manually edit a Fastq file using Bash to multiple similar lines.

In Fastq files a sequence read starts on line 2 and then is found every fourth line (ie lines 2,6,10,14...).

I would like to create an edited text file that is identical to a Fastq file except the first 6 characters of the sequencing reads are trimmed off.

Unedited Fastq:

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

Edited Fastq:

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

2 回答 2

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,打印该行。
于 2015-02-16T15:57:31.473 回答
1

GNU sed 可以做到这一点:

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

地址的2~4意思是“从第 2 行开始,每 4 行重复一次”。

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

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

于 2015-02-16T16:22:54.547 回答