【问题标题】:Inverted exclamation and question mark in ISO-8859ISO-8859 中倒置的感叹号和问号
【发布时间】:2015-05-01 00:43:08
【问题描述】:

我需要替换字幕文件中的倒置感叹号和倒置问号,以便它们在我的电视上正确显示。这些文件在 ISO-8859 中可以正常工作,但我无法删除标记。

第一个解决方案是使用命令'sed':

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

这适用于 UTF-8 格式的文件,但对于 ISO-8859 格式的文件,什么是正确的解决方案?

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

【问题讨论】:

  • 为什么不用iconv(1)来转换文件呢?
  • 因为它显示了错误的 UTF-8 字幕重音。
  • UTF-8 是一种编码,而不是字母表。 “¡”和“¿”都可以在 ISO 8859-1 中找到,这是另一种编码。
  • 我知道。但是“¡”和“¿”的代码不一样。
  • 澄清一下,您的电视是否支持 ISO 8859-1,还是只能理解 ASCII?

标签: linux bash utf-8 sed iso-8859-1


【解决方案1】:

在此命令中,您的 \ 在参数传递给 sed 之前被 bash 删除:

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"

【讨论】:

    猜你喜欢
    • 2012-12-07
    • 2013-07-12
    • 2022-07-26
    • 1970-01-01
    • 1970-01-01
    • 2015-04-09
    • 1970-01-01
    • 1970-01-01
    • 2014-07-30
    相关资源
    最近更新 更多