2014-10-10 94 views
-1

我有一个文件,其中我想匹配图案复制到包含匹配pattern.The图案的线下方的下两行是不fixed.For例如编辑文本文件用awk/sed的

1. m_cg 
    2. do0 
    3. do1 
    4. a_cg 
    5. do2 
    6. do3 

我想要的输出

1.m_cg 
    2.m_cg do0 
    3.m_cg do1 
    4.a_cg 
    5.a_cg do2 
    6.a_cg do3 

* _ CG是模式匹配。任何帮助是极大的赞赏

+0

格式化您的输入 – 2014-10-10 05:45:22

回答

2

这AWK的一行应该做的:

awk '/_cg$/{p=$0;print;next}{print p,$0}' file 

你的榜样:

kent$ cat f 
m_cg 
do0 
do1 
a_cg 
do2 
do3 

kent$ awk '/_cg$/{p=$0;print;next}{print p,$0}' f 
m_cg 
m_cg do0 
m_cg do1 
a_cg 
a_cg do2 
a_cg do3 
1

这可能为你工作(GNU SED):

sed -r 's/\s//g;/_cg/{h;b};G;s/\.(.*)\n.*(\..*)$/\2 \1/' file 

删除所有空白。在遇到包含_cg的行时,将其复制到保留空间(HS),然后将其打印出来。对于所有其他行,追加复制的行(HS)并重新排列行以适应所需的格式。