written on Nov 10, 13

用awk的next合并多行文件

EPD上得到人类启动子序列

>EP 2 (+) SAMD11_1; range -250 to 49. CGCGGGGAGTTAAAAAGTTCGGGACCTGAGCGGTGCGTGGTTCCGCGGTGGCCGCCTCTT CCTGCCGCGCAGGCCGAGGGTCCCGACGGCGCCGCTCACCGCTCCGGGACTCAGCCTTTC TGGGCCCGGCCTGCGGTTCCCTCGGGGCCGGGGAGAGGGTGGAGCGCGGGAGGAGGGGCG CCGGGTGGGGACGCCCAGGCCCTTCGTCGGGGGAGGGCGCTCCACCCGGGCTGGAGTTGC AGAGCCCAGCAGATCCCTGCGGCGTTCGCGAGGGTGGGACGGGAAGCGGGCTGGGAAGTC

>EP 2 (+) SAMD11_2; range -250 to 49. CTCACACCAGGCACCGTCCCCCAGGGCAGCTCAGGCACCAAGAGCCTGAATAATTCACCA AATGTTAATAATGTAAAAATCCTCCTTTTTAATTGCTTTCCCTGCTCTGCCTGGGGCCGC TCTGCTGGCCGCGCGGGGGAGGGGCGCCGGCCGCCGGGGAGCGCGCTGTCAATCAGGCCG CGCCGCCGCCCCCCCCCCCCGCCCCGCCGCGGAGCCGGCCGTAAATAACCCTGTAACTAA CCCGGCCGCTAGCGCGGGGGCGCTGGGCCCCGCTGGGATCGATGCGGGCGGCCGCGCCGG

>EP 3 (+) SAMD11_3; range -250 to 49. TCCGCAGGGGAGGGGAGCAGGCGGGGCCGGCGCCCCGCGCAGTAATTACCGCTGCAGCCG TCGCCGCCCGCCGGGTCAGCGCCTCCGCGCCGCCGCCGAGATTAATTGGCGCCGCCGGCG GGGGCGGGGATGGCGCGCGACCTGGGGCCGTAACGAGCTGCGCATCGACCGCCCGCGGGG CCGGCAATTAGCGGAGGCGGCGGGGGAGGGGCGCCGGGGCCTTTACGGGAACGGGGGCGG GGGGGACGCCGCTCATTGCGCTGCCGTCCACAGGGAGCTGCCTCAGCCGCCCCCCTTGCT

需要对这些分行的序列信息合并成一列
利用awk的next函数

awk '/to/{print T;T="";next}{T=T""$0}' $f > seqformat

逻辑是遇到满足/to/的行,执行print T;T="";(此时T中存有上以组序列的信息,输出改序列并准备下一个序列的存放),跳过过后面的语句。 若不满足则直接执行T=T=T""$0(连接之前与此段的序列)

结果为

CGCGGGGAGTTAAAAAGTTCGGGACCTGAGCGGTGCGTGGTTCCGCGGTGGCCGCCTCTTCCTGCCGCGCAGGCCGAGGGTCCCGACGGCGCCGCTCACCGCTCCGGGACTCAGCCTTTCTGGGCCCGGCCTGCGGTTCCCTCGGGGCCGGGGAGAGGGTGGAGCGCGGGAGGAGGGGCGCCGGGTGGGGACGCCCAGGCCCTTCGTCGGGGGAGGGCGCTCCACCCGGGCTGGAGTTGCAGAGCCCAGCAGATCCCTGCGGCGTTCGCGAGGGTGGGACGGGAAGCGGGCTGGGAAGTC

CTCACACCAGGCACCGTCCCCCAGGGCAGCTCAGGCACCAAGAGCCTGAATAATTCACCAAATGTTAATAATGTAAAAATCCTCCTTTTTAATTGCTTTCCCTGCTCTGCCTGGGGCCGCTCTGCTGGCCGCGCGGGGGAGGGGCGCCGGCCGCCGGGGAGCGCGCTGTCAATCAGGCCGCGCCGCCGCCCCCCCCCCCCGCCCCGCCGCGGAGCCGGCCGTAAATAACCCTGTAACTAACCCGGCCGCTAGCGCGGGGGCGCTGGGCCCCGCTGGGATCGATGCGGGCGGCCGCGCCGG

TCCGCAGGGGAGGGGAGCAGGCGGGGCCGGCGCCCCGCGCAGTAATTACCGCTGCAGCCGTCGCCGCCCGCCGGGTCAGCGCCTCCGCGCCGCCGCCGAGATTAATTGGCGCCGCCGGCGGGGGCGGGGATGGCGCGCGACCTGGGGCCGTAACGAGCTGCGCATCGACCGCCCGCGGGGCCGGCAATTAGCGGAGGCGGCGGGGGAGGGGCGCCGGGGCCTTTACGGGAACGGGGGCGGGGGGGACGCCGCTCATTGCGCTGCCGTCCACAGGGAGCTGCCTCAGCCGCCCCCCTTGCT


虽然始终没有正经看The AWK Programming Language,但我已经完全被awk折服了
参考

Show Source
comments powered by Disqus