簡體   English   中英

awk 打印匹配模式的行

[英]awk to print lines matching a pattern

我有一個如下所示的 mpd。 文件名為 mpd

<BaseURL>01/</BaseURL>
   <SegmentList timescale="1000">
   <SegmentURL media="1.ts" mediaRange="0-6003779"/>
   <SegmentURL media="2.ts" mediaRange="0-7313387"/>
   <BaseURL>02/</BaseURL>
   <SegmentList timescale="1000">            
   <SegmentURL media="1.ts" mediaRange="0-6003779"/>
   <SegmentURL media="2.ts" mediaRange="0-7313387"/>
   <BaseURL>01/</BaseURL>
   <SegmentList timescale="1000">
   <SegmentURL media="3.ts" mediaRange="0-6003779"/>
   <SegmentURL media="4.ts" mediaRange="0-7313387"/>    
   <BaseURL>02/</BaseURL>
   <SegmentList timescale="1000">
   <SegmentList timescale="1000">
   <SegmentURL media="3.ts" mediaRange="0-6003779"/>
   <SegmentURL media="4.ts" mediaRange="0-7313387"/>

我想將每個<BaseURL><segment URL行保存到不同的文件中

我想要的輸出是

<BaseURL>01/</BaseURL>
    <SegmentURL media="1.ts" mediaRange="0-6003779"/>
    <SegmentURL media="2.ts" mediaRange="0-7313387"/>
    <SegmentURL media="3.ts" mediaRange="0-6003779"/>
    <SegmentURL media="4.ts" mediaRange="0-7313387"/>

我已經嘗試了以下命令,但沒有按預期工作,任何幫助將不勝感激。 下面的命令僅打印 mpd 文件中的最后一段 URL。 我很困惑為什么 awk 只打印段 url 的最后一個條目

  awk '
# start writing to new segment file segment.01 etc
match($0, /<BaseURL>([0-9]+)\/<\/BaseURL>/, m) {
  base=m[1]
  close(segf)
  segf="segment." base
  print "write segments to " segf
  print >segf
}
/<SegmentURL / {print >segf}
END {close(segf)}
' mpd
  awk '
# start writing to new segment file segment.01 etc
match($0, /<BaseURL>([0-9]+)\/<\/BaseURL>/, m) {
  base=m[1]
  close(segf)
  segf="segment." base
  print "write segments to " segf
  print >>segf
}
/<SegmentURL / {print >segf}
END {close(segf)}
' mpd

這是我的答案

貓 dfg | awk 'function writeFile(a) { print $0 >> "File_"a; } BEGIN{FS="[<,>,=]";a=0;}{ if($2 == "BaseURL") { a++;writeFile(a) } else if($2 == "SegmentURL media") { writeFile(a) }}'

說明:- 使用多個文件分隔符來准確比較並提取所需的行,並在我們獲得 BaseURL 時保留一個計數器。 增加計數器並將其傳遞給 awk 中用戶定義的函數(每次遇到 BaseURL 時都會打開新文件以在計數器更改時寫入),這是我們為寫入基於文件的輸出而制作的

輸出:-

File1_4 File1_3 File1_2 File1_1

暫無
暫無

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

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