awk-从变量附加字段
第一篇文章在这里,这是一个很好的问题 我有一个文件如下所示:awk-从变量附加字段,awk,Awk,第一篇文章在这里,这是一个很好的问题 我有一个文件如下所示: Motif name class from to strand sequence score >ENSBTAG00000000436 MA0079.2 SP1 Zinc-coordinating 29 38 - agggggtggg 6.33 ... (50 similar lines) >ENSBTAG00000000380
Motif name class from to strand sequence score
>ENSBTAG00000000436
MA0079.2 SP1 Zinc-coordinating 29 38 - agggggtggg 6.33
... (50 similar lines)
>ENSBTAG00000000380
MA0113.1 NR3C1 Zinc-coordinating 92 109 - ccagaaagtgcttctccc 7.03
... (57 similar lines)
等等。请注意,>ENSBTA行是一组记录的“标签”。所以我想要的是将>ENSBTA行作为字段追加到以MA开头的行中。。。i、 e
MA0079.2 SP1 Zinc-coordinating 29 38 - agggggtggg 6.33 >ENSBTAG00000000436
到目前为止我有
awk '{if (NR>1&&NF==1) genename=$1; if (NR>1&&NF>1) print $0, genename}'
这非常接近,但它没有将ENST标识符保留在正确的行中。因此,参考上面的示例,并非文件第二部分的所有57行都获得了正确的标识符(ENSBTAG00000000380)
有人能建议最好的方法吗
谢谢
Iain未经测试,但类似的内容应该与您想要的内容非常接近:
awk '/^>ENSBTAG/{tag=$0;}/^MA/{print $0,tag}'
也就是说,如果该行与行首“>ENSBTAG”匹配,则将该行保存在变量中,但如果该行与行首的“MA”匹配,则打印添加了最新标记的行
如果您的记录行不总是匹配“^MA”(示例中的所有记录行都匹配,但我不想假设),或者如果标记有时看起来有点不同,则需要相应地修改regexp。此一行将提供以下输出(请参阅测试)。第一行
“Motif name class from to strand sequence score”
也将打印出来
awk '/^>[A-Z]*/{l=$0;next;}{print $0" "l}' file
测试
kent$ cat a
Motif name class from to strand sequence score
>ENSBTAG00000000436
MA0079.2 SP1 Zinc-coordinating 29 38 - agggggtggg 6.33
MA0080.2 SP1 Zinc-coordinating 29 38 - agggggtggg 6.34
MA0082.2 SP1 Zinc-coordinating 29 38 - agggggtggg 6.35
>ENSBTAG00000000380
MA0113.1 NR3C1 Zinc-coordinating 92 109 - ccagaaagtgcttctccc 7.03
MA0113.1 NR3C1 Zinc-coordinating 92 109 - ccagaaagtgcttctccc 7.04
MA0113.1 NR3C1 Zinc-coordinating 92 109 - ccagaaagtgcttctccc 7.05
kent$ awk '/^>[A-Z]*/{l=$0;next;}{print $0" "l}' a
Motif name class from to strand sequence score
MA0079.2 SP1 Zinc-coordinating 29 38 - agggggtggg 6.33 >ENSBTAG00000000436
MA0080.2 SP1 Zinc-coordinating 29 38 - agggggtggg 6.34 >ENSBTAG00000000436
MA0082.2 SP1 Zinc-coordinating 29 38 - agggggtggg 6.35 >ENSBTAG00000000436
MA0113.1 NR3C1 Zinc-coordinating 92 109 - ccagaaagtgcttctccc 7.03 >ENSBTAG00000000380
MA0113.1 NR3C1 Zinc-coordinating 92 109 - ccagaaagtgcttctccc 7.04 >ENSBTAG00000000380
MA0113.1 NR3C1 Zinc-coordinating 92 109 - ccagaaagtgcttctccc 7.05 >ENSBTAG00000000380
谢谢这是一个很好的方法,与我的方法完全不同,也很有教育意义。谢谢Kent。这也很棒。我没有想到要像你们两个一样使用正则表达式。需要改进我的方法!:-)