Text-Processing
如果下一行以模式開頭,則刪除行
如果一行不以“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}'
andsed '/^>/{$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
- 尋找一個以換行符開頭並在換行符之後
>
有另一個的模式>
- 刪除到換行符
一個 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;}'