複数のfasta形式の入力があります。基本的に:
>header1
AAAAAATTTTCCCCGGGG
AAAATGTGTGTCTCTCTC
ATAGGATGAGT
>header2
GGGGTGTGTGATGTAGTA
AAAATGTGTGTCTCTCTC
ATAGGATGAGT
....
>header720
GGGGTGCTCGCTCTGTGA
AAAATGAGTCATCATTGT
ATAGGATGAGT
次の形式でアイテム#28を回復したいと思います。
>header28
GGGGTGCTCGCTCTGTGA
AAAATGAGTCATCATTGT
ATAGGATGAGT
私の最初の試みはsedを使用することでした。ただし、
sed -n '/header28/,/>/p'
(「パターンに一致する行から次の記号までのすべての項目をインポートする」)、結果は次のようになります。
>header28
GGGGTGCTCGCTCTGTGA
AAAATGAGTCATCATTGT
ATAGGATGAGT
>header29
またsed -n '/header28/,/[^>]*/p'
、(「記号を含まずにパターンに一致する行からすべての項目を取得します。」)は、次のように改行文字にかかるため、必要なものよりも短いシーケンスを生成します。
>header28
GGGGTGCTCGCTCTGTGA
さらに、これらのオプションのどれも、項目がリストの最後の項目である可能性を処理しません(したがって、他の>は後にありません)。不可能で耐えることができますが、それを処理するコードもあれば良いでしょう。
助けてくれてありがとう! sed以外に他のオプションも開いていますが、私は単純なことを目指していると思います。
ベストアンサー1
おそらくこれはすでに要求されているでしょう...しかし、とにかく範囲の終わりがある場合は削除してください。
sed '/>header28/,/>/!d;/>/{
/>header28/!d
}' infile