我有一个 file.fa:
>ABC
TGTGTGT
AGAGAGA
TGTAGTA
>BDC
>DTR
>EDF
AGAGGTG
AGTGACA
CAGTGAC
Run Code Online (Sandbox Code Playgroud)
我想保留没有 ">" 的行,只有在紧随其后的行没有 ">" 时才保留带有 ">" 的行:
>ABC
TGTGTGT
AGAGAGA
TGTAGTA
>EDF
AGAGGTG
AGTGACA
CAGTGAC
Run Code Online (Sandbox Code Playgroud)
查看这篇文章的答案,我看到awk '/^>/{x=$0} !/^>/{if(x){print x;x=0;}}' file.fa打印出我想要的标题行(带有“>”):
>ABC
>EDF
Run Code Online (Sandbox Code Playgroud)
但是我如何获得没有“>”的文本行?
使用sed:
$ sed '/^>/ { N; /\n>/ D; }' input.txt
>ABC
TGTGTGT
AGAGAGA
TGTAGTA
>EDF
AGAGGTG
AGTGACA
CAGTGAC
Run Code Online (Sandbox Code Playgroud)
如果一行以 开头>,请阅读下一行并将其附加到模式空间。如果它也以 开头>,则删除模式空间的第一行,然后将刚刚读取的第二行作为新的输入行进行查看。打印所有其他内容。
您可以使用:
awk '!/^>/ {if (prev != "") print prev; print; prev=""}
/^>/ {prev = $0}' file
>ABC
TGTGTGT
AGAGAGA
TGTAGTA
>EDF
AGAGGTG
AGTGACA
CAGTGAC
Run Code Online (Sandbox Code Playgroud)
$ awk '!/>/{print p $0; p=""; next} {p=$0 ORS}' file
>ABC
TGTGTGT
AGAGAGA
TGTAGTA
>EDF
AGAGGTG
AGTGACA
CAGTGAC
Run Code Online (Sandbox Code Playgroud)
以上假设您没有>一行作为输入的最后一行。
| 归档时间: |
|
| 查看次数: |
125 次 |
| 最近记录: |