Замените смарт-кавычки командой Linux sed
Избавьтесь от «умных» кавычек с помощью любимой версии sed.
В типографике пара кавычек традиционно ориентирована друг к другу. Они выглядят так:
«умные цитаты»
Когда в середине двадцатого века компьютеры стали популярными, от этой ориентации часто отказывались. В исходном наборе символов компьютеров не было много свободного места, поэтому имеет смысл сократить две двойные и две одинарные кавычки до одной в спецификации ASCII. В наши дни общепринятым набором символов является Unicode, в котором достаточно места для множества причудливых кавычек и апострофов, но многие люди привыкли к минимализму, состоящему только из одного символа как для открывающих, так и для закрывающих кавычек. Кроме того, компьютеры воспринимают различные виды кавычек и апострофов как отдельные символы. Другими словами, для копьютера правая двойная кавычка отличается от левой двойной кавычки или прямой кавычки.
Замена умных кавычек на sed
Компьютеры — это не пишущие машинки. Когда вы нажимаете клавишу на клавиатуре, вы не нажимаете рычаг с прикрепленным к нему чернильным штампом. Вы просто нажимаете кнопку, которая отправляет на ваш компьютер сигнал, который компьютер интерпретирует как запрос на отображение определенного предопределенного символа. Запрос зависит от вашей раскладки клавиатуры. Как машинистка Дворжака, я была свидетелем замешательства на лицах людей, когда они обнаруживали, что «asdf» на моей клавиатуре создает на экране «aoeu». Вы также могли нажимать специальные комбинации клавиш для создания символов, таких как ™, ß или ≠, которые даже не напечатаны на вашей клавиатуре.
Каждая буква или символ, независимо от того, напечатана она на клавиатуре или нет, имеет код. Кодировку символов можно выразить по-разному, но для компьютера последовательности Юникода u2018 и u2019 создают ' и ', а коды u201c и u201d создают “ символы и ”. Зная эти «секретные» коды, вы можете заменить их программно с помощью такой команды, как sed. Подойдет любая версия sed, поэтому вы можете использовать sed GNU, BSD или даже sed Busybox.
Вот простой сценарий оболочки, который я использую:
#!/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}"
Сохраните этот скрипт как fixquotes.sh
, а затем создайте отдельный тестовый файл, содержащий смарт-кавычки:
‘Single quote’
“Double quote”
Запустите сценарий, а затем используйте команду cat, чтобы увидеть результаты:
$ sh ./fixquotes.sh test.txt
$ cat test.txt
'Single quote'
"Double quote"
Установить СЭД
Если вы используете Linux, BSD или macOS, значит, у вас уже установлен GNU или BSD sed
. Это две уникальные реализации исходной команды sed
, и для сценария в этой статье они функционально одинаковы (хотя это верно не для всех сценариев).
В Windows вы можете установить GNU sed с Chocolatey.