使用 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~
替换原文件,留下文件名附加 ~
的备份。
我想使用 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~
替换原文件,留下文件名附加 ~
的备份。