首页 文章

使用Unix命令行工具修改FASTA标头

提问于
浏览
1

我再次陷入修改文本的困境 . 我想改变大文本文件,如:

>hg19_ct_UserTrack_3545_691 range=chr1:8121498-8121502 5'pad=0 3'pad=0 strand=+ repeatMasking=none
GATGG
>hg19_ct_UserTrack_3545_690 range=chr1:8121587-8121591 5'pad=0 3'pad=0 strand=+ repeatMasking=none
GATAG

>chr1:8121498-8121502 5'pad=0 3'pad=0 strand=+ repeatMasking=none
GATGG
>chr1:8121587-8121591 5'pad=0 3'pad=0 strand=+ repeatMasking=none
GATAG

我一直在使用 sed '/^>/s/[^ ]* />/' 删除第一部分( >hg19_ct_UserTrack_3545_690 ),但我真的不知道如何删除 range= . 我尝试了 //grep 的各种组合,但没有快乐 .

谢谢

2 回答

  • 1

    尝试这些各种shell命令=)

    使用awk

    awk -F'range=' '/^>/{print ">" $2}' file
    

    或者sed

    sed '/^>/s/.*range=(.*)/>\1/' file
    
  • 1

    试试这一行:

    sed 's/[^=>]*=//' file
    

    测试你的输入:

    kent$  echo ">hg19_ct_UserTrack_3545_691 range=chr1:8121498-8121502 5'pad=0 3'pad=0 strand=+ repeatMasking=none
    GATGG
    >hg19_ct_UserTrack_3545_690 range=chr1:8121587-8121591 5'pad=0 3'pad=0 strand=+ repeatMasking=none
    GATAG"|sed 's/[^=>]*=//'
    >chr1:8121498-8121502 5'pad=0 3'pad=0 strand=+ repeatMasking=none
    GATGG
    >chr1:8121587-8121591 5'pad=0 3'pad=0 strand=+ repeatMasking=none
    GATAG
    

相关问题