num
HH:MM:SS,SSS --> HH:MM:SS,SSS
text line 1
text line 2
...
脚本必须移动秒。 (可以是+或 - )
示例:
$cat bmt.srt
5
00:01:02,323 --> 00:01:05,572
Hello, my frieds!
6
....
$./shifter.sh +3<mbt.srt
5
00:01:05,323 --> 00:01:08,572
Hello, my frieds!
6
我想,我需要抓住所有HH:MM:SS并首先将它们转换为秒。 如果有人能在没有sed的情况下做到这一点,我会鼓掌。谢谢!
答案 0 :(得分:1)
你的shifter.sh:
#!/bin/sh
export DELTA=$1
perl -pe '
BEGIN {
sub to_secs {
my ($h,$m,$s) = split(/:/, shift);
$h*3600 + $m*60 + $s;
}
sub to_str {
my $secs = shift;
my $s = $secs % 60;
my $h = int($secs / 3600);
my $m = int(($secs - $h*3600) / 60);
sprintf("%d:%02d:%02d", $h, $m, $s);
}
}
s/(\d+:\d\d:\d\d)/ to_str(to_secs($1) + $ENV{DELTA}) /ge;
'