2016-03-17 95 views
0

我需要編寫一個Bash腳本來從輸出文件中刪除相似的行。 我的輸出文件始終是相同的。Shell |刪除重複行

第1行& 2應該停留,並且需要刪除與這兩者相似的其他行。

1: </UsageData><?xml version="1.0" encoding="UTF-8"?> 
2: <UsageData broadcastday="2016-03-16"> 

日期不盡相同。

最後一行應該保留。例如。

</UsageData>

我是新來的shell編程,我無法弄清楚如何做到這一點。

這裏是我的示例XML:

<?xml version="1.0" encoding="UTF-8"?> 
<UsageData broadcastday="2016-03-16"> 
    <Hh hhID="48800301"> 
     <Inst instID="000002B9"/> 
     <Live> 
      <Station>516</Station> 
      <From>Wed Mar 16 2016 09:52:47 GMT+0000 (UTC)</From> 
      <DurSec>58077</DurSec> 
      <Viewer> 
       <HhMem>569de65c9c3ab0cf7bfa2df2</HhMem> 
      </Viewer> 
     </Live> 
    </Hh> 
    <Hh hhID="46920403"> 
     <Inst instID="000002A8"/> 
     <Live> 
      <Station>5000</Station> 
      <From>Wed Mar 16 2016 12:42:17 GMT+0000 (UTC)</From> 
      <DurSec>47908</DurSec> 
      <Viewer> 
       <HhMem>56caee95f915e09335fd976f</HhMem> 
      </Viewer> 
     </Live> 
    </Hh> 
</UsageData><?xml version="1.0" encoding="UTF-8"?> 
<UsageData broadcastday="2016-03-16"> 
    <Hh hhID="15260304"> 
     <Inst instID="000000A5"/> 
     <Live> 
      <Station>5000</Station> 
      <From>Wed Mar 16 2016 12:57:48 GMT+0000 (UTC)</From> 
      <DurSec>28814</DurSec> 
      <Viewer> 
       <HhMem>565f181dd830d3cc7057c0b9</HhMem> 
      </Viewer> 
     </Live> 
    </Hh> 
</UsageData><?xml version="1.0" encoding="UTF-8"?> 
<UsageData broadcastday="2016-03-16"> 
    <Hh hhID="50100501"> 
     <Inst instID="0000022D"/> 
     <Live> 
      <Station>560</Station> 
      <From>Wed Mar 16 2016 14:21:19 GMT+0000 (UTC)</From> 
      <DurSec>41967</DurSec> 
      <Viewer> 
       <HhMem>56c4412de6a8ff4da18fd4ae</HhMem> 
       <HhMem>56c4412de6a8ff4da18fd4cb</HhMem> 
      </Viewer> 
     </Live> 
    </Hh> 
</UsageData><?xml version="1.0" encoding="UTF-8"?> 
<UsageData broadcastday="2016-03-16"> 
    <Hh hhID="36110404"> 
     <Inst instID="00000104"/> 
     <Live> 
      <Station>545</Station> 
      <From>Wed Mar 16 2016 15:01:04 GMT+0000 (UTC)</From> 
      <DurSec>671</DurSec> 
      <Viewer> 
       <HhMem>568ce8acbd0e486a951d41ce</HhMem> 
       <HhMem>568ce8acbd0e486a951d41dc</HhMem> 
       <HhMem>568ce8acbd0e486a951d41c5</HhMem> 
      </Viewer> 
     </Live> 
    </Hh> 
</UsageData> 
+5

使用xml解析器 – 123

+3

歡迎使用StackOverflow!首先,我同意@ 123 XML解析器(或XSLT)是更好的選擇。但是,如果你想幫助調試你的腳本,我們需要看你的腳本!請將其添加到問題中。您可以將XML縮減爲基本要素,我們不需要完整的文件。 – AlG

+0

請不要編輯您的問題添加「解決」。標記爲已解決問題的方法是通過單擊左側的複選標記來接受答案,使其變爲綠色。您可能需要等待一段時間,然後才能接受自己的答案。 – tripleee

回答

0

我解決我的問題非常簡單的方法。

AWK「/ </UsageData> < \ XML版本= 「1.0」 編碼= 「UTF-8」 \>/ {函數getline?; next} 1'文件

+0

Bash喜歡什麼,然後用awk代替Bash? ;) –