2012-05-29 75 views
0

我有這個Linux shell腳本的問題。Linux Shell - 用文件內的其他字符串替換字符串

#! /bin/bash 
find /sdcard/ -type f -iname "*.srt" -print >> /sdcard/files 
count=`wc -l /sdcard/files |cut -d'/' -f1` 
for ((c=1; c<=$count; c++)) 
do 
line=`sed -n ''$c'p' /sdcard/files` 
cat "$line" | sed -e 's/č/c/g' > "$line".srt"" 
rm "$line" 
done 
rm /sdcard/files 

我知道這個心不是要做到這一點的最好辦法,但多數民衆贊成我可以用我的knowlage做

正如你可以看到它找到的所有SRT文件,然後用「C替換所有「C」本地字符」。但它不適用於我下載的文件

但是,當我製作一個新文件並在內部寫入「č」(使用我的鍵盤)時,它會將其替換爲原來的樣子。我不明白爲什麼?

+0

你下載的這些文件的字符編碼是什麼?你可以用'file -i somefile'來檢查它。 – nullpotent

+0

我得到這個文本/ plain; charset = unknown-8bit – pedja

+0

和文件我寫我自己我得到這個文本/平原;字符集= UTF-8。所以如何改變字符編碼 – pedja

回答

3

我想我們發現了原因,現在的解決辦法:

vim somefile.srt -c ":set bomb" -c ":set fileencoding=utf-8" -c ":wq" 

還有一個骯髒的方式

echo -e "\xC2\xA0" >> somefile.srt 

我試圖iconv工具,它應該做的轉換,但它沒」幫助。

相關問題