私は以下のようなmpdを持っています。 MPDawkがパターンと一致する行を印刷する
<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"/>
としてファイル名を指定して、私は
私の所望の出力は、私のように仕事をdoesntのは、次のコマンドを試してみました
<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"/>
で異なるファイルに各<BaseURL>
について<segment URL
ラインを保存したいです期待されるどんな助けもありがとう。以下のコマンドは、mpdファイル内の最後のセグメントURLのみを表示しています。私はawkがあなたが別のファイルに保存したいと言うが、あなたはsegment.01` `にすべてを保存しているセグメントの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
を印刷している理由について混乱しています。異なるファイルに書き込むコードはどこですか?また、 ' '行に' 0'と '1'文字の並びだけが一致していれば、' 'と一致しません。 –
Barmar
regexpは「([0-9] +)<\/BaseURL>」と一致する必要があります。 –
Barmar
'segf'ファイル名の正規表現にあるキャプチャグループの番号の使い方を尋ねていますか? http://stackoverflow.com/questions/10913598/how-to-get-sub-expression-value-of-regexp-in-awk – Barmar