我有一个(fasta)文件input.fa
,看起来像这样
>coucou
GAGAGATAGTATAGATATATAGGATATATA
>hello_world
GATATATTCTCTCTGAFAGACGACGACFGACTACTACGAC
>ziva_wesh
HAHTAHTAHTAHCGAGAGACAGCAGCAGCACTTACTACATCHBACAHCAHCAHA
我想摆脱两者
>coucou
GAGAGATAGTATAGATATATAGGATATATA
和
>ziva_wesh
HAHTAHTAHTAHCGAGAGACAGCAGCAGCACTTACTACATCHBACAHCAHCAHA
我在做什么(基于@Hai Vu的this solution
$awk '/hello/{getline;next} 1' input.fa | awk '/coucou/{getline;next} 1'
>ziva_wesh
HAHTAHTAHTAHCGAGAGACAGCAGCAGCACTTACTACATCHBACAHCAHCAHA
有没有办法(使用awk
或sed
或perl
脚本)执行此操作,而无需将第一个awk
结果“管道”到第二个awk
命令? (像/hello&coucou/{getline;next} 1' input.fa
)
感谢您的回答!
答案 0 :(得分:3)
一个简单的方法:
$ awk '/hello/{getline;next} /coucou/{getline;next} 1' input.fa
>ziva_wesh
HAHTAHTAHTAHCGAGAGACAGCAGCAGCACTTACTACATCHBACAHCAHCAHA
或者如果您愿意:
$ awk '/(hello)|(coucou)/{getline;next} 1' input.fa
>ziva_wesh
HAHTAHTAHTAHCGAGAGACAGCAGCAGCACTTACTACATCHBACAHCAHCAHA
答案 1 :(得分:3)
一个简单的sed命令也可以处理:
sed -nr '/>(hello|coucou)/{N;d};p' file
>ziva_wesh
HAHTAHTAHTAHCGAGAGACAGCAGCAGCACTTACTACATCHBACAHCAHCAHA
答案 2 :(得分:1)
这可能适合你(GNU sed):
sed -r '/>(coucou|ziva_wesh)/,+1d' file
这将删除2行的范围(包含>coucou
或>ziva_wesh
的行与下一行的匹配。)