我sed
用来将srt
文件转换为常规文本文件。An
srt` 文件的格式为
1
00:20:41,150 --> 00:20:45,109
line 1
line 2
2
00:21:41,150 --> 00:21:45,109
line 3
line 4
所以我使用以下命令删除非文本行
sed -r '/^[0-9]+$/{N;d}' file.srt > file.txt
产生
line1
line2
line3
line4
但我想得到
line1 line2
line3 line4
(每个字幕段为一行)
我怎样才能做到这一点?
用它来获得你的模式
您应该可以
awk
通过在“段落模式”下操作它来完成此操作(参见例如@EdMorton 的解决方案,以及来自stackoverflow的“打印除第一个字段之外的所有字段”问题的解决方案)这会将任何“空行”分隔的文本块解释为一个输入记录,其字段是文本块的各个行。然后,上面的命令将用“空”字符串替换前两个字段(=lines)并打印整行。
请注意,这会在“实际输出”之前留下两个空格(输出字段分隔符)。
awk
如果这是一个问题,您可以使用-internal 循环仅显式打印剩余字段: