I have an mpd which looks like below. with file name as 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"/>
I wanted to save the <segment URL
lines for each <BaseURL>
into different files
My desired output is
<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"/>
I have tried the following command which doesnt work as expected any help would be appreciated. Below command is only printing the last segment URL in the mpd file. I am confused on why awk is printing only the last entries of segment 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