使用 sed 匹配 WebVTT 文件中的时间戳

Match timestamps in WebVTT files with sed

我有以下 PCRE2 正则表达式,用于匹配和删除 .webVTT 字幕文件(YouTube 的默认设置)中的时间戳行:

^[0-9].:[0-9].:[0-9].+$

这改变了这个:

00:00:00.126 --> 00:00:10.058
How are you today?

00:00:10.309 --> 00:00:19.272
Not bad, you?

00:00:19.559 --> 00:00:29.365
Been better.

为此:

How are you today?

Not bad, you?

Been better.

我如何将此 PCRE2 正则表达式转换为与 sed 风格的正则表达式等效的惯用语(阅读:看起来很正常)?

将正则表达式与 sed

结合使用
$ sed -En '/^[0-9].:[0-9].:[0-9].+$/!p' file
How are you today?

Not bad, you?

Been better.

或者,不匹配以整数结尾的行

$ sed  -n '/[0-9]$/!p' file
How are you today?

Not bad, you?

Been better.

您的模式不是特定的 PCRE2 模式,仅使用 sed 您必须转义 \+ 以使其成为量词 1 次或多次。

在您使用点匹配任何字符的位置(并查看示例数据)也有一个数字。

您可以使模式更具体一些,并完全省略量词。如果模式匹配,则阻止打印该行。

sed -n '/^[0-9][0-9]:[0-9][0-9]:[0-9]/!p' file
  • -n 阻止 sed 中的默认打印
  • !p 如果模式不匹配则打印行

输出

How are you today?

Not bad, you?

Been better.