簡體   English   中英

提取sed或awk中的線之間的線

[英]extract lines between the lines in sed or 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?

使用GNU sed:

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

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>

使用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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM