2015-05-01 70 views
2

我需要替換字幕文件中的倒置感嘆號和倒置問號,以便它們在我的電視上正確顯示。這些文件在ISO-8859中正常工作,但我無法刪除標記。ISO-8859中倒置的感嘆號和問號

第一個解決方案是使用命令「sed」:

sed s/\¿|¡//g "$FILE" 

這適用於UTF-8的文件,但什麼是對文件的ISO-8859的解決方案?例如,

sed 's/\xBF//g'不起作用。

+0

爲什麼不能用'的iconv(1)'轉換文件? –

+0

因爲它給我顯示了UTF-8字幕的錯誤口音。 – Weinze

+0

UTF-8是一種編碼,而不是字母表。 「¡」和「¿」都在ISO 8859-1中找到,這是另一種編碼。 –

回答

1

在此命令,您\由bash的去除參數傳遞給sed的面前:

sed s/\¿//g "$FILE" 

這不要緊,因爲¿不是一個bash元字符,它不需要引用。但是,如果你這樣寫:

sed s/\xBF//g "$FILE" 

它不會做你期望的; bash將取代\xx離開sed命令s/xBF//g,這可能不是你想要做的。

必須要麼寫:

sed 's/\xBF//g' 

sed s/\\xBF//g 

發佈的命令將無法正常工作,但:

sed s/\¿|¡//g "$FILE" 

|是一個bash元字符,因此它必須被引用或轉義。此外,sed默認使用基本正則表達式(BRE),這意味着您必須編寫\|來表示交替。這意味着,你必須鍵入:

sed 's/¿\|¡//g' "$FILE" 

sed s/¿\\\|¡//g "$FILE"