嗨,我有一个mpd,其中包含以下信息
<BaseURL>01/</BaseURL>
<SegmentList timescale="1000">
<SegmentTimeline>
<S t="0" d="11477" dtv:lastVideoPTS="1126034"/>
<S t="11477" d="11111" dtv:lastVideoPTS="2126033"/>
<S t="22588" d="11200" dtv:lastVideoPTS="3132038"/>
<S t="33789" d="11422" dtv:lastVideoPTS="4162067"/>
<S t="45211" d="11711" dtv:lastVideoPTS="5219123"/>
<S t="56923" d="11177" dtv:lastVideoPTS="6222125"/>
<S t="68101" d="11478" dtv:lastVideoPTS="7252154"/>
</SegmentTimeline>
<SegmentURL media="1.ts" mediaRange="0-3424419"/>
<SegmentURL media="2.ts" mediaRange="0-8063319"/>
<SegmentURL media="3.ts" mediaRange="0-7146631"/>
<SegmentURL media="4.ts" mediaRange="0-8984143"/>
<SegmentURL media="5.ts" mediaRange="0-7496499"/>
<SegmentURL media="6.ts" mediaRange="0-10445091"/>
<SegmentURL media="7.ts" mediaRange="0-8854423"/>
</SegmentList>
</Representation>
<Representation id="02" bandwidth="2066992" width="896" height="720" scanType="progressive">
<BaseURL>02/</BaseURL>
<SegmentList timescale="1000">
<SegmentTimeline>
<S t="0" d="11477" dtv:lastVideoPTS="1126034"/>
<S t="11477" d="11244" dtv:lastVideoPTS="2135042"/>
<S t="22722" d="11878" dtv:lastVideoPTS="3207113"/>
<S t="34600" d="11778" dtv:lastVideoPTS="4270175"/>
<S t="46379" d="11945" dtv:lastVideoPTS="5345249"/>
<S t="58324" d="11945" dtv:lastVideoPTS="6417320"/>
<S t="70270" d="11911" dtv:lastVideoPTS="7489391"/>
<S t="82181" d="11478" dtv:lastVideoPTS="8522423"/>
</SegmentTimeline>
<SegmentURL media="1.ts" mediaRange="0-1801039"/>
<SegmentURL media="2.ts" mediaRange="0-3065151"/>
<SegmentURL media="3.ts" mediaRange="0-2842747"/>
<SegmentURL media="4.ts" mediaRange="0-3216303"/>
<SegmentURL media="5.ts" mediaRange="0-2798943"/>
<SegmentURL media="6.ts" mediaRange="0-3977891"/>
<SegmentURL media="7.ts" mediaRange="0-3301843"/>
我想grep for base url / 01什么是所有段网址和基本url / 02什么是所有段网址,你可以请帮助,因为我是脚本新...
我正在寻找的所需输出是基本url / 01保存到不同的文件,基本url / 02相同
<BaseURL>01/</BaseURL>
<SegmentURL media="1.ts" mediaRange="0-3424419"/>
<SegmentURL media="2.ts" mediaRange="0-8063319"/>
<SegmentURL media="3.ts" mediaRange="0-7146631"/>
<SegmentURL media="4.ts" mediaRange="0-8984143"/>
<SegmentURL media="5.ts" mediaRange="0-7496499"/>
<SegmentURL media="6.ts" mediaRange="0-10445091"/>
<SegmentURL media="7.ts" mediaRange="0-8854423"/>
答案 0 :(得分:0)
我建议您使用 xml2 (http://www.ofb.net/~egnor/xml2/) 将xml转换为grep-able。
不幸的是,您发布的xml似乎对我不利,请更新问题。
答案 1 :(得分:0)
未经测试但非常接近:
awk '/<BaseURL>/{close(out); out="out"++c} {print > out}' file
答案 2 :(得分:0)
试试这个 - 它会将<SegmentURL>
元素后面的所有<BaseURL>
元素写入名为segment.basevalue的文件中 - 所以segment.01 segment.02等
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)}
'