我想解决一个常见但非常具体的问题:由于OCR错误,许多字幕文件包含字符“I”(大写字母i)而不是“l”(小写字母L)。
我的攻击计划是:
我当然可以在脚本中对整个文件进行标记和重构,但在我走这条路之前,我想知道是否可以在字级使用awk和/或sed进行这些类型的条件操作?
任何其他建议的方法也将非常受欢迎!
答案 0 :(得分:2)
你真的不需要为此而烦恼:
while read line; do
words=( $line )
for ((i=0; i<${#words[@]}; i++)); do
word=${words[$i]}
if [[ $(hunspell -l <<< $word) ]]; then
# hunspell had some output
tmp=${word//I/l}
if [[ $tmp != $word ]] && [[ -z $(hunspell -l <<< $tmp) ]]; then
# no output for new word, therefore it's a dictionary word
words[$i]=$tmp
fi
fi
done
# print the new line
echo "${words[@]}"
done < filename > filename.new
将整个文件传递给hunspell似乎更有意义,并解析其输出。
答案 1 :(得分:1)
两个建议: