- 论坛徽章:
- 8
|
本帖最后由 cfwyy 于 2019-04-16 16:24 编辑
awk, 只用到了size.txt,因为有文件名了。仅供参考。test.awk
- function printSeg(FileName,Long,Start) {
- printf("<Play>\n\t<FileName>%s</FileName>\n\t<Long>%s</Long>\n\t<Start>%s</Start>\n</Play>\n",FileName,Long,Start)
- }
- #date -d 计算时间,返回 d-HH:MM:SS
- function calcStart(Start,Long,s) {
- cmdstr=sprintf("date -d \"%s %ssec\" +%%d-%%H:%%M:%%S |tr -d \"\\n\"",Start,Long)
- cmdstr | getline s
- return s
- }
- #计算未超过23:59:59的播放开始时间
- function calcAllStart(startTime,i,t) {
- startTime="00:00:00"
- StartArr[1]=startTime
- "date +%d|tr -d \"\\n\"" |getline nowday
- for (i=2;i<=length(LongArr);i++)
- {
- split(calcStart(StartArr[i-1],LongArr[fileNameArr[i-1]]),t,"-")
- if (t[1]==nowday) #同一天,就认为未超过23:59:59
- StartArr[i]=t[2]
- else
- break
- }
- }
- BEGIN {
- RS="["
- }
- NR>1{
- split($2,tmp,"=")
- long=tmp[2]
- fn=substr($1,1,length($1)-1)
- fileNameArr[++k]=fn #文件名数组
- LongArr[fn]=long #时长数组,以文件名为索引
- }
- END {
- calcAllStart()
- for (i=1;i<=length(StartArr);i++)
- printSeg(fileNameArr[i],LongArr[fileNameArr[i]],StartArr[i])
- }
复制代码
|
|