I am LAZY bones? AN ancient AND boring SITE

遇到个字幕问题,贴个把windows文本转为linux文本的命令

周末在家,看个电影,分CD1和CD2的,结果看完CD1,正在兴头上的时候,打开CD2一看,居然没字幕,可字幕文件明明就在哪里。因为以前也遇到过类似问题,打开srt文件,另外一下,基本就可以解决了,但是今天这个死活都出不来。。。搞的非常郁闷。
后来,看电影的兴致已经去了大半,静下心来,才发现,问题出在字幕的换行符上:
那srt文件,普通的行都是正常的windows换行符: \r\n ,但是时间戳那行后面的换行符居然是 \r\n\n 。。。这在windows下可能没问题,但是linux就把它理解为是两个换行了,也就是每个时间戳下面有个空行。而srt的规则应该是时间戳下面紧跟若干行文本,并以空行结束此段,所以字幕都为空行了。难怪显示不出来。
解决办法,也就是把windows文本转为linux文本的命令:

$ cat 1.txt |hex
0x00000000: 31 0d 0a 32 0d 0a 33 – 1MJ2MJ3
$ cat 1.txt | tr -d ‘\n’ | tr ‘\r’ ‘\n’ | hex
0x00000000: 31 0a 32 0a 33 – 1J2J3

PS:这个字幕居然是TLF出的,汗一个。。。

最后修改时间: 2008年09月22日 14:16

本文章发表于: 2008年09月22日 14:16 | 所属分类:经验技巧. | 您可以在此订阅本文章的所有评论. | 您也可以发表评论, 或从您的网站trackback.

2 个评论 关于: “遇到个字幕问题,贴个把windows文本转为linux文本的命令”

  1. walkerxk 在 2008年09月27日 08:54 说:回复

    tr -d ‘\r’就行了,或者sed ‘s,\r,,’,或者用dos2unix。删除\n不是好办法,万一里面有个\n前面没有\r呢?

  2. bones7456 在 2008年09月27日 12:53 说:回复

    @walkerxk: 普通的文本是没问题,可这个字母比较怪,直接删了\r的话,还好是有两个\n在的。

发表评论