如何创build(shell)脚本来将.srt内容复制到相应的Excel列中?

我有一个关于如何自动化将.srt文件内容复制到.xls文件的过程的问题。

我想确保.srt文件中的内容可以被粘贴到.xls的相应列中(例如,进入B列的时间; C列的超时值; E列的字幕)。

为了避免手动复制和粘贴,有没有办法编写这个程序? 有任何想法吗?

提前非常感谢! 🙂

更新:我刚刚发现,字幕编辑可以将.srt保存为csv,这将能够将文件更改为Excel文件。 这很方便! 但还有另外一个问题,我需要将这个CSV文件中的内容复制到另一个具有不同结构的Excel模板中,所以我不能直接复制和粘贴csv中的值。 我正在努力如何使这更容易…

目前无法发布图片,但情况是,在srt转换后的csv文件中的每个input时间文本占用一行时,Excel模板中的时间input文本占用了两行,因此我无法直接将所有文本从一个excel文件复制并粘贴到另一个。 有没有更简单的方法来做到这一点? 谢谢!

在脚本中,您可以使用perl来进行replace:

 perl -0777 -pe 's/\n([^\n])/\t$1/g; s/ --> /\t/g' input.srt | \ perl -ne 's/^\t//; print unless /^$/' > output.csv 

对于这个示例input

 1 00:00:01,478 --> 00:00:04,020 Srt sample 2 00:00:05,045 --> 00:00:09,545 <i>italic</i> font 3 00:00:09,378 --> 00:00:13,745 <b>bold</b> font 4 00:00:14,812 --> 00:00:16,144 Multi Line 

你会得到以下输出:

 1 00:00:01,478 00:00:04,020 Srt sample 2 00:00:05,045 00:00:09,545 <i>italic</i> font 3 00:00:09,378 00:00:13,745 <b>bold</b> font 4 00:00:14,812 00:00:16,144 Multi Line 

关于命令:有两个链接的perl命令

  • 第一个是努力工作:用制表符replace换行符和箭头(保持双换行符作为一个换行符)。

  • 第二个只做了一些清理,它从行开始删除标签,并删除多余的空行。

在Vim中,我将使用:

 :%s/\(.\)$\n\|-->/\1\t/g | :g/^$/d | :%s=\s\+$== 

我知道还不是一个脚本,但现在应该很容易导入Excel中:-)

这意味着find以字符结尾的行并用该字符和制表符replace它,或者find字符-->并用制表符replace它们,然后删除空行,最后删除行尾的空格。