我需要从我的 fastq.gz 数据中提取 5 到 11 个字符,这个数据对于在 R 中运行来说太大了。所以我想知道我是否可以直接在 Linux 命令行中执行此操作? fastq 文件如下所示:
@NB501399:67:HFKTCBGX5:1:11101:13202:1044 1:N:0:CTTGTA
GAGGTNACGGAGTGGGTGTGTGCAGGGCCTGGTGGGAATGGGGAGACCCGTGGACAGAGCTTGTTAGAGTGTCCTAGAGCCAGGGGGAACTCCAGGCAGGGCAAATTGGGCCCTGGATGTTGAGAAGCTGGGTAACAAGTACTGAGAGAAC
+
AAAAA#EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAAEEEEEEEEEEEEEEEEAEEEEEEEEEEEEEEAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAE6
@NB501399:67:HFKTCBGX5:1:11101:1109:1044 1:N:0:CTTGTA
TAGGCNACCTGGTGGTCCCCCGCTCCCGGGAGGTCACCATATTGATGCCGAACTTAGTGCGGACACCCGATCGGCATAGCGCACTACAGCCCAGAACTCCTGGACTCAAGCGATCCTCCAGCCTCAGCCTCCCGAGTAGCTGGGACTACAG
+
而我只想提取位于序列部分的第5到11个字符(第一个是TNACGG,第二个是CNACCT)并将其制成一个新的txt文件。我可以这样做吗?
最佳答案
您可以将 GNU sed 与 zcat 一起使用:
zcat fastq.gz | sed -n '2~5{s/.\{4\}\(.\{6\}\).*/\1/;p}'
-n
表示默认不打印行2~5
表示从第 2 行开始,每五行匹配一次- 当“地址”匹配时,替换记住
\1
中的第五到第十个字符并用它替换整行,p
打印结果
关于linux - 如何从 gz 文件中提取特定文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53780349/