求助,关于中英字幕文件合并的脚本

sh/bash/dash/ksh/zsh等Shell脚本
回复
天羽美羽
帖子: 183
注册时间: 2013-05-22 22:29
系统: Ubuntu14.04

求助,关于中英字幕文件合并的脚本

#1

帖子 天羽美羽 » 2013-09-14 9:23

想看中英对照的字幕,现有一个英文字幕,一个中文字幕,我知道可以用cat a.ass b.ass > c.ass 的方法,
但是这个剧有很多集,不想一个个改,太累了耶,想弄个脚本来批量来做,求前辈指导。 :em11

发现字幕都是 01.en.ass 01.tc.ass 02.en.ass 02.tc.ass ...24.en.ass 24.tc.ass之类的文件。

代码: 全选

#!/bin/bash


for file0 in *.chs.srt; do
(( l=${#file0}-8))
file2=${file0:0:l}
sed 's/[[:space:]]/\#/g' "$file0" | sed 's/\#/\ /g' | \
awk '{if(NF>0){for(i=1;i<NF;i++){printf("%s ",$i)};printf("%s\n",$NF)}else {printf("\n")}}' | \
awk -vRS="" -vFS='\n' '{for(i=2;i<=NF;i++)print $i};{printf("\n")}' > "$file0.srt0"
for file1 in *.eng.srt; do
(( l=${#file1}-8))
file3=${file1:0:l}
if [ "$file2" = "$file3" ]; then
sed 's/[[:space:]]/\#/g' "$file1" | sed 's/\#/\ /g' | \
awk '{if(NF>0){for(i=1;i<NF;i++){printf("%s ",$i)};printf("%s\n",$NF)}else {printf("\n")}}' | \
awk -vRS="" -vFS='\n' '{for(i=2;i<=NF;i++)print $i};{printf("\n")}' > "$file1.srt1"
diff "$file0.srt0" "$file1.srt1" -D fanhe | grep -v '^\#.*' > "$file2.srt"
fi
done
done

rm -f *.srt0 *.srt1

echo "结束。"
exit 0
viewtopic.php?f=74&t=65877
在论坛里找到的一个帖子,但不知如何更改才能符合批量更改的要求,代码盲 :em06
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: 求助,关于中英字幕文件合并的脚本

#2

帖子 lilydjwg » 2013-09-14 14:46

如果你的字幕文件的名字如你所述,并且都在当前目录下的话,

[bash]
for i in {01..24}; do
cat $i.en.ass $i.tc.ass > $i.ass
done
[/bash]

将生成合并后的字幕文件 01.ass 到 24.ass。
天羽美羽
帖子: 183
注册时间: 2013-05-22 22:29
系统: Ubuntu14.04

Re: 求助,关于中英字幕文件合并的脚本

#3

帖子 天羽美羽 » 2013-09-14 19:57

lilydjwg 写了:如果你的字幕文件的名字如你所述,并且都在当前目录下的话,

[bash]
for i in {01..24}; do
cat $i.en.ass $i.tc.ass > $i.ass
done
[/bash]

将生成合并后的字幕文件 01.ass 到 24.ass。
谢谢,
还有,想学习bash脚本,前辈有没有推荐入门学习的书本? :em06
之前菜鸟一个,略懂windows的bat脚本,看前辈的脚本貌似和bat有相像之处。
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: 求助,关于中英字幕文件合并的脚本

#4

帖子 lilydjwg » 2013-09-21 19:45

天羽美羽 写了: 还有,想学习bash脚本,前辈有没有推荐入门学习的书本? :em06
之前菜鸟一个,略懂windows的bat脚本,看前辈的脚本貌似和bat有相像之处。
我是自己乱混的……

有本叫《高级bash脚本编程》还是什么的书,或者看它的手册也行。
回复