我试图从文件中删除除西班牙字符外的所有Unicode字符。匹配不同的元音字母并没有任何问题,使用以下正则表达式不会替换
áéíóúÁÉÍÓÚ
(但所有其他Unicode似乎都被替换了):perl -pe 's/[^áéíóúÁÉÍÓÚ[:ascii:]]//g;' filename
。但是,当我将倒问号¿或感叹号¡添加到正则表达式中时,其他Unicode字符也被匹配和排除,而我想要删除它们:perl -pe 's/[^áéíóúÁÉÍÓÚ¡¿[:ascii:]]//g;' filename
不会替换以下内容(有些不可打印):³ � �
。我是否遗漏了明显的东西?我也愿意尝试在终端上以其他方式完成此操作。
perl -CIOED -pe 's/[^áéíóúÁÉÍÓÚ[:ascii:]]//g;' filename
。 - Wiktor Stribiżewuse utf8;
或-Mutf8
。此外,您的输入必须进行解码,输出必须重新编码,因为文件始终以某种编码方式存在。文件的编码很可能是UTF-8,如果是这种情况,则-CSD
(相当于@WiktorStribiżew提到的-CIOED
)将执行此编码,但您应该确定这一点。 - Grinnzperl -CIOED -pe 's/[^áéíóúÁÉÍÓÚ¡¿[:ascii:]]//g;' testing
可以删除所有Unicode字符,但保留了倒置的问号和感叹号,但不会保留预期的 áéíóúÁÉÍÓÚ 字符。我正在尝试保留áéíóúÁÉÍÓÚ¡¿并从UTF-8输入文件中删除所有其他Unicode(仅保留ASCII)。 - wazy