![](/img/trans.png)
[英]Using sed/awk to print lines with matching pattern OR another matching pattern
[英]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.