2
我需要替換字幕文件中的倒置感嘆號和倒置問號,以便它們在我的電視上正確顯示。這些文件在ISO-8859中正常工作,但我無法刪除標記。ISO-8859中倒置的感嘆號和問號
第一個解決方案是使用命令「sed
」:
sed s/\¿|¡//g "$FILE"
這適用於UTF-8的文件,但什麼是對文件的ISO-8859的解決方案?例如,
sed 's/\xBF//g'
不起作用。
我需要替換字幕文件中的倒置感嘆號和倒置問號,以便它們在我的電視上正確顯示。這些文件在ISO-8859中正常工作,但我無法刪除標記。ISO-8859中倒置的感嘆號和問號
第一個解決方案是使用命令「sed
」:
sed s/\¿|¡//g "$FILE"
這適用於UTF-8的文件,但什麼是對文件的ISO-8859的解決方案?例如,
sed 's/\xBF//g'
不起作用。
在此命令,您\由bash的去除參數傳遞給sed的面前:
sed s/\¿//g "$FILE"
這不要緊,因爲¿不是一個bash元字符,它不需要引用。但是,如果你這樣寫:
sed s/\xBF//g "$FILE"
它不會做你期望的; bash將取代\x
與x
離開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"
爲什麼不能用'的iconv(1)'轉換文件? –
因爲它給我顯示了UTF-8字幕的錯誤口音。 – Weinze
UTF-8是一種編碼,而不是字母表。 「¡」和「¿」都在ISO 8859-1中找到,這是另一種編碼。 –