如果下一行以模式开头,则删除该行

Tia*_*zzi 5 command-line sed awk text-processing text-formatting

如果一行不是以“a”“c”“t”或“g”开头,并且下一行以“>”开头,我想删除它。在以下示例中,删除了“`>seq3”。

输入:

>seq1
actgatgac
>seq2
ctgacgtca
>seq3
>seq4
gtagctagt
>seq5
tgacatgca
Run Code Online (Sandbox Code Playgroud)

预期输出:

>seq1
actgatgac
>seq2
ctgacgtca
>seq4
gtagctagt
>seq5
tgacatgca
Run Code Online (Sandbox Code Playgroud)

我试过 sed ( sed '/^>.*/{$!N;/^>.*/!P;D}'and sed '/^>/{$d;N;/^[aA;cC;gG;tT]/!D}') 但没有成功。

ste*_*ver 8

你可以尝试这样的事情:

$ sed -e '$!N;/^>.*\n>/D' -e 'P;D' file
>seq1
actgatgac
>seq2
ctgacgtca
>seq4
gtagctagt
>seq5
tgacatgca
Run Code Online (Sandbox Code Playgroud)

那是

  • 维护一个两行缓冲区$!N...P;D
  • 寻找一个以换行符开头>>在换行符之后有另一个的模式
  • 删除到换行符