【问题标题】:how can I reformat sequences (several lines) in a fasta file to single line? [duplicate]如何将 fasta 文件中的序列(多行)重新格式化为单行? [复制]
【发布时间】:2015-09-18 20:38:27
【问题描述】:

输入“file.fasta”(注意,这是一个示例......在fasta文件中,序列可能超过三行)

>chr1:117223140-117223856 标签:GTGGG GTGGgggggcgCATAGCAGCAGCAGCAGCAGCAGCAGCAGCAGCAGAGtt aGTAGTATCGAATCGCACGACTGACAGCTCAGCATCAGCGACGACTAGTG GTGGGCGACGACAgCGATATA >chr2:117223140-117223856 标签:GGGCT ACGAGCAGCAGCAGCAGCagCCGATCGACGACTCAAGTACGATACGCGaa cCCCCCGACGACGACTCACGA

预期输出

>chr1:117223140-117223856 标签:GTGGG GTGGgggggcgCATAGCAGCAGCAGCAGCAGCAGCAGCAGCAGCAGAGttaGTAGTATCGAATCGCACGACTGACAGCTCAGCATCAGCGACGACTAGTGGTGGGCGACGACAgCGATATA >chr2:117223140-117223856 标签:GGGCT ACGAGCAGCAGCAGCAGCagCCGATCGACGACTCAAGTACGATACGCGaacCCCCCGACGACGACTCACGA

我的努力:sed 命令

sed ':a;N;$!ba;s/\([actgACGT]\)\n\([actgACGT]\)/\1\2/g' file.fasta

我的错误输出:

>chr1:117223140-117223856 标签:GTGGGGTGGgggggcgCATAGCAGCAGCAGCAGCAGCAGCAGCAGCAGCAGAGttaGTAGTATCGAATCGCACGACTGACAGCTCAGCATCAGCGACGACTAGTGGTGGGCGACGACAgCGATATA >chr2:117223140-117223856 标签:GGGCTACGAGCAGCAGCAGCAGCagCCGATCGACGACTCAAGTACGATACGCGaacCCCCCGACGACGACTCACGA

标题的正则表达式(第一个字母是“>”的行)是"^>.*$",但我不知道如何包含在sed命令中

提前致谢

【问题讨论】:

  • @tripleee 你说的对是重复的,我没见过

标签: bash sed fasta


【解决方案1】:

这可能对你有用(GNU sed):

sed ':a;N;/>/!s/\n//;ta;P;D' file

查看两行,如果其中不包含>,则删除它们之间的换行符并重复。如果其中任何一行确实包含>,则打印并删除其中的第一行,然后重复。

【讨论】:

  • 我会学习sed,我还有很多要学.....非常感谢
【解决方案2】:
$ awk '/^>/ {print (NR>1?"\n":"")$0;; next} {printf "%s",$0;} END{print "";}' file.fasta 
>chr1:117223140-117223856 TAG:GTGGG
GTGGgggggcgCATAGCAGCAGCAGCAGCAGCAGCAGCAGCAGCAGAGttaGTAGTATCGAATCGCACGACTGACAGCTCAGCATCAGCGACGACTAGTGGTGGGCGACGACAgCGATATA
>chr2:117223140-117223856 TAG:GGGCT
ACGAGCAGCAGCAGCAGCagCCGATCGACGACTCAAGTACGATACGCGaacCCCCCGACGACGACTCACGA

工作原理

  • /^>/ {print (NR>1?"\n":"")$0;; next}

    如果该行以> 开头,即如果正则表达式/^>/ 为真,则打印该行。如果这不是第一行,即NR>1,则在行前打印一个换行符。然后,跳过其余命令并跳转到 next 行重新开始。

  • printf "%s",$0;

    对于所有其他行,打印它们不带尾随换行符。

  • END{print "";}

    到达文件末尾后,打印最后一个换行符。

【讨论】:

    猜你喜欢
    • 2020-12-22
    • 2021-07-06
    • 1970-01-01
    • 2020-12-18
    • 1970-01-01
    • 2021-08-15
    • 1970-01-01
    • 2014-10-01
    • 2020-04-13
    相关资源
    最近更新 更多