使用 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.
我有以下 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.