如何创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它们,然后删除空行,最后删除行尾的空格。