LINUX.ORG.RU

Отображение символа SOH — Start of Header (0x01) в терминале

 ,


0

1

В мире финтеха много сообщений передается в формате FIX. Сообщения FIX состоят из набора полей «тег=значение». Поля отделяются ASCII кодом SOH — Start of Header (0x01).

Несколько лет назад при выводе сообщения из лога в терминал я получал вместо SOH на экране ^A:

8=FIXT.1.1^A9=00541^A35=W^A34=19^A52=20220717-20:05:38.151

Потом это исчезло, и стало выводиться без ^A:

8=FIXT.1.19=0054135=W34=1952=20220717-20:05:38.151

В результате поля сливаются и читать тяжело. Кажется, это произошло при смене Убунту с 16.04 на 20.04. Не уверен.

Прежний вывод с ^A можно получить, задав в конце команды «cat -v»:

tail file_name | cat -v

Но раньше же работало без этого.

Пробовал разные терминалы - везде одно и то же.

С чем может быть связано, как восстановить прежнее поведение?

★★

Последнее исправление: blex (всего исправлений: 1)

Ответ на: комментарий от rupert

Да нет проблем заменить. Как я писал выше, cat -v решает проблему. Но это ж надо добавлять всегда, когда в логах ковыряешься. А раньше трава была зеленее, и все получалось само.

blex ★★
() автор топика

Соменваюсь, что вам кто-нибудь поможет, вот похожая тема xfce-terminal печатает непечатаемые символы, скотина такой, притом криво. , можете кастануть её автора.

Лучше попробуйте разные эмуляторы терминалов, и/или старые версии Убунту в виртуалку, чтобы точно знать, когда работало. Версии терминала и его библиотек.

Эмулятор терминала базово не обязан отображать непечатные символы. То, что вы наблюдали ранее, скорее баг, а не фича, причём не понятно чего, может терминала, а может библиотеки (допустим libvte).

ИМХО, хотите ^A, готовьтесь патчить и компилять.

mky ★★★★★
()