I am LAZY bones? AN ancient AND boring SITE

2008年 09月 22日 的归档

遇到个字幕问题,贴个把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出的,汗一个。。。