Когда я хочу рекурсивно искать в файлах TeX символы, не поддерживаемые шрифтом, я обычно начинаю с поиска неразрывных пробелов и пробелов нулевой ширины. Их трудно вывести в командной строке терминала, поэтому я использую их шестнадцатеричное представление в формате UTF-8.
env LANG=C grep -obUaP "\xc2\xa0" $(find -name '*.tex')
env LANG=C grep -obUaP "\xe2\x80\x8b" $(find -name '*.tex')
Почему мне нужно явно установить переменную окружения LANG
в C
, как показано выше: env LANG=C
Использование -U
и -a
одновременно может показаться ошибочным, но в этой версии руководства говорится, что
Когда тип 'binary', grep может рассматривать нетекстовые байты как терминаторы строк даже без опции -z (--null-data).
-a
заставляет только терминаторы строк быть терминаторами строк (не так ясно).
http://www.gnu.org/software/grep/manual/html_node/File-and-Directory-Selection.html