「a」「c」「t」または「g」で始まらず、次の行が「>」で始まる行を削除したいのですが。次の例では、「 `> seq3」を削除しています。
入力:
>seq1
actgatgac
>seq2
ctgacgtca
>seq3
>seq4
gtagctagt
>seq5
tgacatgca
期待される出力:
>seq1
actgatgac
>seq2
ctgacgtca
>seq4
gtagctagt
>seq5
tgacatgca
私はsed(sed '/^>.*/{$!N;/^>.*/!P;D}'
およびsed '/^>/{$d;N;/^[aA;cC;gG;tT]/!D}'
)が成功しませんでした。
あなたはこのようなことを試すことができます:
$ sed -e '$!N;/^>.*\n>/D' -e 'P;D' file
>seq1
actgatgac
>seq2
ctgacgtca
>seq4
gtagctagt
>seq5
tgacatgca
あれは
$!N
... P;D
で2行のバッファを維持する>
で始まり、改行の後に別の>
があるパターンを探しますAwkの例:
awk 'BEGIN {lasta="XXX"} {if ($0 !~ /^ *>/) printf("%s\n%s\n",lasta,$0); lasta=$0;}' fileNAME.txt
に相当
cat fileNAME.txt | awk 'BEGIN {lasta="XXX"} {if ($0 !~ /^ *>/) printf("%s\n%s\n",lasta,$0); lasta=$0;}'
Awkコマンドが正常に機能することを試しました
awk '{a[++i]=$0}/^[actg]/{for(x=NR-1;x<=NR;x++)print a[x]}' file.txt
出力
>seq1
actgatgac
>seq2
ctgacgtca
>seq4
gtagctagt
>seq5
tgacatgca
pcregrep
がインストールされている場合は、次のことを試してください。
pcregrep -M '^>.*\n[^>]' file
説明
-M
は複数行の一致を許可します>
で始まり、改行NOTで終わり、その後に>
が続くパターンを検索します