#!/usr/bin/awk -f function realtime (t) { sub(/,/, ".", t); split(t, artime, /:/); rt = 0; for (i in artime) { rt = rt * 60 + artime[i]; } return rt; } function printtime (rt) { f = sprintf("%.3f", rt); sub(/^.*\./, "", f); t = sprintf("%02d.%s", int(rt % 60), f); for (i=1; i<3; i++) { rt = int (rt / 60); temp = rt % 60; t = sprintf("%02d:%s", temp, t); } sub(/\./, ",", t); return t; } BEGIN { if ((ARGC < 3) || (ARGC > 4)) { printf "Usage: SubRipperSpread.awk [output]\n" \ >> "/dev/stderr"; printf " fact: factor close to 1\n" >> "/dev/stderr"; exit(-1); } output = (ARGC == 4) ? ARGV[3] : ""; if (output != "") printf "" > output; fact = ARGV[1]; ARGV[3] = ARGV[1] = ""; ind = 0; nextind = 1; } # For dos and mac { sub(/\r/, "", $0); sub(/\f/, "", $0); } NF == 0 { nextind = 1; } $1 ~ /\<[0-9]+\>/ { if (nextind) $0 = ""; nextind = 0; } $2 == "-->" { beg = realtime($1) * fact; end = realtime($3) * fact; if (ind != 0) { if (output == "") { printf "\n"; } else { printf "\n" >> output; } } ind++; if (output == "") { printf "%d\n%s --> %s\n", ind, printtime(beg), printtime(end); } else { printf "%d\n%s --> %s\n", ind, printtime(beg), printtime(end) \ >> output; } $0 = ""; } NF > 0 { if (ind) { if (output == "") { printf "%s\n", $0; } else { printf "%s\n", $0 >> output; } } }