Из документации Bash:
Words of the form $'string' are treated specially. The word expands to
string, with backslash-escaped characters replaced as specified by the
ANSI C standard. Backslash escape sequences, if present, are decoded
as follows:
\a alert (bell)
(...)
\nnn the eight-bit character whose value is the octal value
nnn (one to three digits)
\xHH the eight-bit character whose value is the hexadecimal
value HH (one or two hex digits)
Итак, в указанном вами примере, $ '\ x01'
- это просто персонаж с
код 1, согласно вашему описанию. Из моего (очень ограниченного) тестирования, это
Похоже, что ZSH также поддерживается ZSH:
$ printf %s $'\x01' | od -t x1
0000000 01
0000001
Однако команда TR
, которую вы опубликовали, только решит вашу проблему
Если мы предположим, что ваш файл на самом деле содержит буквальный символ
с кодом 1; Это появляется из комментариев, которые у вас есть вместо
Является ли строка из четырех символов \ x01
, где вкладка символ должен
быть. Следующий фильтр должен исправить это условие:
sed 's/\\x01/\t/g'