我的想法很混乱,无法很好地综合描述这个问题,因此标题很糟糕。顺便给我推荐一个更好的吧。
基本上,我有两个 SubRip (.srt) 字幕,行数相同。它们使用不同的语言,我需要同步它们。
将一个点同步到另一个点并不能得到足够好的结果,因为第二个点显然有一些不好的定时线。我想要做的是将时间戳从第一个复制到第二个。
由于有些行有换行符,因此计时的节奏并不固定。要获取带有计时的行,我应该寻找从开始时间到结束时间的箭头。
1.srt
1
00:00:01,336 --> 00:00:03,437
Foo
2
00:00:03,440 --> 00:00:05,093
Bar
Baz
3
00:00:05,096 --> 00:00:07,330
Qux
2.srt
1
00:00:01,336 --> 00:00:03,935
Quux
2
00:00:03,936 --> 00:00:05,201
Garply
Waldo
3
00:00:05,803 --> 00:00:07,467
Fred
more 1.srt | grep -- "-->"
00:00:01,336 --> 00:00:03,437
00:00:03,440 --> 00:00:05,093
00:00:05,096 --> 00:00:07,330
more 2.srt | grep -- "-->"
00:00:01,336 --> 00:00:03,935
00:00:03,936 --> 00:00:05,201
00:00:05,803 --> 00:00:07,467
我怎样才能将包含时间戳的行替换1.srt
为相应的行2.srt
?
答案1
让我们描述性地命名文件:good-text
和good-times
。
隔离带有时间戳的行
good-times
:grep -- '-->' good-times > the-ringer
让我们
awk
替换错误的时间戳:< good-text awk ' { if ($2 == "-->") getline < "the-ringer" print } ' > good-all
每次
awk
遇到第二个字段为 的行时,-->
它就用 中的一行替换它the-ringer
。清除
沃尔特的脏内衣垃圾:rm the-ringer
。
检查good-all
,它应该包含您想要的内容。整个过程可以单独完成,awk
但我决定吻。