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

Using Bash to Manually Edit a Text or Fastq file

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

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

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

未经编辑的 Fastq:

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

已编辑 Fastq:

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

我想 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,打印该行。

GNU sed 可以做到这一点:

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

地址2~4表示"start on line 2, repeat each 4 lines"。

s表示替换,^匹配行首,.匹配任意字符,\{6\}指定长度(一个"quantifier")。替换字符串为空 (//).

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