나는 아래와 같은 mpd를 가지고 있습니다. MPD와 같은 파일 이름으로awk가 패턴과 일치하는 줄을 출력합니다.
<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
당신은 당신이 다른 파일에 저장하고 싶은 말은의 마지막 항목을 인쇄하는 이유에 혼란 스러워요,하지만 당신은 segment.01''에 모든 것을 저장하고 있습니다. 다른 파일에 쓸 코드는 어디에 있습니까? 또한 ''행에 '0'과 '1'문자가있는 행만 일치하면 ''과 일치하지 않습니다. –
Barmar
정규 표현식은 숫자와 일치 시키려면 ' ([0-9] +) <\/BaseURL>'이어야합니다. –
Barmar
'segf' 파일명의 정규식에서 캡처 그룹의 번호를 사용하는 방법을 묻고 있습니까? http://stackoverflow.com/questions/10913598/how-to-get-sub-expression-value-of-regexp-in-awk – Barmar