Bash Shell删除智能引号

Bash Shell删除智能引号,你想从 MS Word 的文档中提取简单的 ASCII 文本,但将其另存为文本时,仍然有一些奇怪的字符。

解决方案

将那些奇怪的字符转换成简单的 ASCII 字符。

tr '\221\222\223\224\226\227' '\047\047""--' <odd.txt >plain.txt

讨论

这种“智能引号”出自 Windows-1251 字符集,也可能会出现在保存为文本的电子邮件消息中。

从形态上看,引号有两种:直引号(straight quote,也称为 dumb quote)和弯引号(curly quote,也称为 smart quote)。智能引号的设计目的是让用户在视觉上区分左引号和右引号,以免忘记关闭引号。

要想清理这种文本,得用到 tr 命令,将值为 221 和 222(八进制)的弯单引号转换成简单的单引号(也就是直引号)。这里我们用八进制值(047)来指定后者,这样更容易处理,因为 shell 引用字符串时要用到单引号。223 和 224(八进制)分别是左右弯双引号。可以将直双引号直接放入第二个参数,因为外部的单引号能够避免 shell 对双引号做出解释。226 和 227(八进制)是破折号,它们会被转换成连字符(技术上并不需要第二个参数中的第二个连字符,因为 tr 会重复最后一个字符,使之匹配第一个参数的长度,不过最好还是写清楚)。

酷客网相关文章:

赞(0)

评论 抢沙发

评论前必须登录!