用您最喜欢的sed版本删除“智能”引号。在排版中,一对引号传统上是相互朝向的。它们看起来像这样:“SmartQuotes”随着计算机在20世纪中叶的普及,这种定位常常被抛弃。计算机的本机字符集没有太多空间,因此在ASCII规范中将两个双引号和两个单引号缩减为一个是有道理的。如今,通用字符集是Unicode,它有足够的空间容纳大量花哨的引号和撇号,但许多人已经习惯了单字符开头和结尾引号的极简主义。此外,计算机实际上将不同种类的引号和撇号视为不同的字符。换句话说,右双引号与计算机的左双引号或直引号不同。用sed替换智能引号计算机不是打字机。当你按下键盘上的一个键时,你并不是在按下一个上面有印记的杠杆。您只需按下一个按钮,它就会向您的计算机发送一个信号,计算机将其解释为显示某些预定义字符的请求。此请求取决于您的键盘映射。作为一名Dvorak打字员,当人们发现我键盘上的“asdf”在屏幕上产生“aoeu”时,我亲眼目睹了他们脸上的困惑。您可能还按下了一些特殊的组合键来生成?或?或≠等字符,这些字符甚至不会印在您的键盘上。每个字母或字符,无论是否打印在您的键盘上,都有一个代码。字符编码可以用不同的方式表示,但对于计算机来说,Unicode序列u2018和u2019产生“and”,代码u201c和u201d产生“and”字符。了解这些“秘密”代码意味着您可以通过编程方式将它们替换为sed之类的命令。任何版本的sed都可以,因此您可以使用GNUsed或BSDsed,甚至是Busyboxsed。这是我使用的一个简单的shell脚本:#!/bin/sh#GNUAll-PermissiveLicenseSDQUO=$(echo-ne'\u2018\u2019')RDQUO=$(echo-ne'\u201C\u201D')$SED-i-e"s/[$SDQUO]/\'/g"-e"s/[$RDQUO]/\"/g""${1}"将这个脚本保存为fixquotes.sh,然后创建一个包含弯引号的文件A单独的测试文件:'Singlequote'"Doublequote"运行脚本,然后使用cat命令查看结果:$sh./fixquotes.shtest.txt$cattest.txt'Singlequote'"Doublequote"如果您正在使用,请安装sedLinux、BSD或macOS,那么你已经安装了GNU或BSD的sed。这是对原始sed命令的两个独特的重新实现,它们在功能上等同于本文中的脚本(尽管并非所有脚本都一样)。在Windows上,你可以用Chocolatey安装GNUsed。
