Если даже маркер [1181220]\HF=[1181221] может быть разбит в любой точке на новую строку (как указано в вашем комментарии к первоначальному посту), то требуется несколько иной подход, так как PCRE в настоящее время не поддерживает lookbehinds переменной длины. В этом случае вы можете попробовать
, где lookbehind заменяется псевдо-якорным выражением, используя [1181222] \K
Большая часть данных в не текстовом файле не может быть представлена с использованием символов из любого из доступных наборов символов. Когда эти данные обрабатываются кошкой и показаны на экране, он отображается как ��� или другие бессмысленные символы, так как их нет другого способа отображения.
На самом деле � не "бессмысленный персонаж". Это символ замены Unicode . Он отображается в терминале с использованием кодировки UTF-8 при попытке отобразить байт, который не является допустимым кодом UTF-8. Он может отображаться (но с меньшей вероятностью), если шрифты, доступные для терминала, не предоставляют конкретное допустимое значение Unicode, но в этом случае более вероятно, что отображается пустой .
Обычно можно распечатать коды 32–126 (US-ASCII, переносимый набор символов POSIX). Коды 160–255 можно распечатать в кодировке ISO-8859-1, но не как UTF-8, потому что они могут быть одним из двух или более байтов, составляющих значение Unicode в кодировке UTF-8. Точно так же коды 128-159 являются управляющими символами в ISO-8859-1 (и непечатаемыми), но в UTF-8 это один из двух или более байтов и т. Д.
Если вы cat
нетекстовый файл, вероятно, он будет содержать байты из диапазона 128–255, и они вряд ли будут формировать допустимые значения UTF-8. Так что вы увидите �.
Дополнительная литература: