2016-10-28 40 views
0

嗨我得到了一段日志,我需要提取 部分之间的标签和标签必须包括在内。sed或awk中的行之间提取行

日志看起来是这样的
2016/10/28 13:22:17 INFO 2016/10/28 13:22:17 INFO

<Command tId="27810237892289-789766789" user="root"> <ChangeTAG a_var="22341431413" b_var="837431243413" status="activated"></ChangeTAG> </Command> application=ui_6789 state=5 state_current=na 2016/10/28 13:22:19 INFO 2016/10/28 13:22:19 INFO <Command tId="27810567892289-701226789" user="root"> <ChangeTAG a_var="87656651413" b_var="345751243413" status="activated"></ChangeTAG> </Command> application=ui_3444 state=1 state_current=na 2016/10/28 13:22:29 INFO 2016/10/28 13:22:29 INFO

和输出应该是这样的:
<Command tId="27810237892289-789766789" user="root"> <ChangeTAG a_var="22341431413" b_var="837431243413" status="activated"></ChangeTAG> </Command>
<Command tId="27810567892289-701226789" user="root"> <ChangeTAG a_var="87656651413" b_var="345751243413" status="activated"></ChangeTAG> </Command> 任何想法如何从日志中SED AWK或者grep的砍了?

+0

请看看[编辑的帮助(http://stackoverflow.com/editing-帮帮我)。 – Cyrus

+0

您的文件看起来像一个xml文件,您应该使用xml解析器(尝试xidel)。 –

回答

1

随着GNU sed的:

sed -n '/<Command/,/<\/Command/p' file 
+0

这不适合我,因为文件 –

0

awk来救援!

$ awk '/<Command/{p=1} /<\/Command/{printf "%s", $1; p=0} p' file 

<Command 
     tId="27810237892289-789766789" 
     user="root"> 
    <ChangeTAG 
      a_var="22341431413" 
      b_var="837431243413" 
      status="activated"></ChangeTAG> 
</Command> <Command 
     tId="27810567892289-701226789" 
     user="root"> 
    <ChangeTAG 
      a_var="87656651413" 
      b_var="345751243413" 
      status="activated"></ChangeTAG> 
+0

中有更多的commnads标签,这似乎可行,但需要在新行 –

+0

karakfa

0

随着GNU AWK多字符RS,RT,并gensub():

$ awk -v RS='</Command>' 'RT{print gensub(/.*(<Command)/,"\\1",1) RT}' file 
<Command 
     tId="27810237892289-789766789" 
     user="root"> 
    <ChangeTAG 
      a_var="22341431413" 
      b_var="837431243413" 
      status="activated"></ChangeTAG> 
</Command> 
<Command 
     tId="27810567892289-701226789" 
     user="root"> 
    <ChangeTAG 
      a_var="87656651413" 
      b_var="345751243413" 
      status="activated"></ChangeTAG> 
</Command>