Странный символ для пустой строки в TextWrangler и cat -v
У меня есть текстовый файл, который на моем Mac я открываю с помощью TextWrangler. Я включаю невидимые символы, чтобы увидеть окончания строк. Я вижу, что каждая пустая строка имеет красный, перевернутый вопросительный знак. Какой это персонаж?
Когда в терминале я печатаю cat -v file.txt
показывает эти символы как ^@
(и сами окончания строки как ^M
). То, что мне нужно знать, это регулярное выражение этого конкретного персонажа, как /n
для конца строки.
В шестнадцатеричном дампе я вижу следующее:
0000000: 312e 300d 0a00 0d0a 2231 3130 3030 3030 1.0....."1100000
0000010: 3030 3222 3b22 3922 3b22 5354 4422 3b3b 002";"9";"STD";;
0000020: 3b0d 0a22 3131 3030 3030 3030 3639 223b ;.."1100000069";
Если я вручную удаляю странные символы и создаю новый шестнадцатеричный дамп, я вижу:
0000000: 312e 300d 0a0d 0a22 3131 3030 3030 3030 1.0...."11000000
0000010: 3032 223b 2239 223b 2253 5444 223b 3b3b 02";"9";"STD";;;
0000020: 0d0a 2231 3130 3030 3030 3036 3922 3b22 .."1100000069";"
Разница заключается в последовательности байтов 00. Существует ли кодировка, в которой этот 00 требуется для пустых строк?
1 ответ
Красный перевернутый знак вопроса, на который вы смотрите, очевидно, является символом NULL / NUL. Будет ли это иметь какое-то значение, зависит от того, будет ли приложение писать / читать рассматриваемые файлы. (Так что, скорее всего, это не общая проблема кодирования. Сравните: Wikipedia.)
Как только вы сделали скрытые символы видимыми в TextWrangler, вы можете пометить этот / любой символ (или последовательность символов в этом отношении) и скопировать его в поле ввода Find, используя CMD + E. NULL символ отображается как \x{00}
на моей машине.
В качестве альтернативы вы можете использовать -> Текст -> Zap Gremlins... с проверенными (как минимум) нулевыми (ASCII 0) символами, Заменить выбранным кодом и получить подсказку \x00
, Любой из них должен работать при поиске этих символов - независимо от того, включен ли grep или нет. Не уверен, однако, будь \s
на самом деле должен найти его также в режиме grep - его нет на моей машине. Но \W
делает grep это.
Пожалуйста, прокомментируйте, если и как это требует корректировки / более подробной информации.