Substitua aspas inteligentes pelo comando sed do Linux
Elimine as citações "inteligentes" com sua versão favorita do sed.
Na tipografia, um par de aspas era tradicionalmente orientado um para o outro. Eles se parecem com isto:
“citações inteligentes”
À medida que os computadores se tornaram populares em meados do século XX, a orientação foi frequentemente abandonada. O conjunto de caracteres original dos computadores não tinha muito espaço de sobra, então faz sentido que duas aspas duplas e duas aspas simples fossem reduzidas a apenas uma de cada na especificação ASCII. Hoje em dia, o conjunto de caracteres comum é Unicode, com bastante espaço para muitas aspas e apóstrofos sofisticados, mas muitas pessoas se acostumaram com o minimalismo de apenas um caractere para aspas de abertura e fechamento. Além disso, os computadores realmente veem os diferentes tipos de aspas e apóstrofos como caracteres distintos. Em outras palavras, para um copmuter, as aspas duplas direitas são diferentes das aspas duplas esquerdas ou retas.
Substituindo aspas inteligentes por sed
Computadores não são máquinas de escrever. Ao pressionar uma tecla no teclado, você não está pressionando uma alavanca com um carimbo de tinta anexado a ela. Você está apenas pressionando um botão que envia um sinal ao seu computador, que o computador interpreta como uma solicitação para exibir um caractere predefinido específico. A solicitação depende do mapa do seu teclado. Como digitador Dvorak, testemunhei a confusão no rosto das pessoas quando descobrem que “asdf” no meu teclado produz “aoeu” na tela. Você também pode ter pressionado combinações especiais de teclas para produzir caracteres, como ™ ou ß ou ≠, que nem sequer estão impressos no teclado.
Cada letra ou caractere, impresso ou não no teclado, possui um código. A codificação de caracteres pode ser expressa de diferentes maneiras, mas para um computador as sequências Unicode u2018 e u2019 produzem ' e ', enquanto os códigos u201c e u201d produzem o “ e ” caracteres. Conhecer esses códigos “secretos” significa que você pode substituí-los programaticamente usando um comando como sed. Qualquer versão do sed serve, então você pode usar GNU sed ou BSD sed ou até mesmo Busybox sed.
Aqui está o script de shell simples que eu uso:
#!/bin/sh
# GNU All-Permissive License
SED=$(which sed)
SDQUO=$(echo -ne '\u2018\u2019')
RDQUO=$(echo -ne '\u201C\u201D')
$SED -i -e "s/[$SDQUO]/\'/g" -e "s/[$RDQUO]/\"/g" "${1}"
Salve este script como fixquotes.sh
e crie um arquivo de teste separado contendo aspas inteligentes:
‘Single quote’
“Double quote”
Execute o script e use o comando cat para ver os resultados:
$ sh ./fixquotes.sh test.txt
$ cat test.txt
'Single quote'
"Double quote"
Instalar sed
Se você estiver usando Linux, BSD ou macOS, então você já tem o GNU ou BSD sed
instalado. Essas são duas reimplementações exclusivas do comando sed
original e, para o script deste artigo, elas são funcionalmente iguais (embora isso não seja verdade para todos os scripts).
No Windows, você pode instalar o GNU sed com o Chocolatey.