也许有人能帮我。在狂欢中,我不知道该怎么做。我需要写一个bash-script。在标准输入中,我有这样格式的字幕.srt文件:
num
HH:MM:SS,SSS --> HH:MM:SS,SSS
text line 1
text line 2
...HH:MM:SS,SSS文本标题的开始和结束。
脚本必须移位秒数。(它可以是+或-)
示例:
$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的情况下做到这一点,我会鼓掌的。谢谢!
发布于 2013-10-18 01:24:23
您的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;
'https://stackoverflow.com/questions/19432936
复制相似问题