URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 3863
[ Назад ]

Исходное сообщение
"Как отобразить символ по его hex-коду  в Shell"

Отправлено gres16 , 22-Янв-05 10:18 
Почему-то printf "\x2b" так и выводит \x2b

Содержание

Сообщения в этом обсуждении
"Как отобразить символ по его hex-коду  в Shell"
Отправлено gres16 , 22-Янв-05 21:00 
Неужели прийдется case'ом делать?

"Как отобразить символ по его hex-коду  в Shell"
Отправлено vnp , 23-Янв-05 02:07 
>Почему-то printf "\x2b" так и выводит \x2b

printf $'\x2b'



"Как отобразить символ по его hex-коду  в Shell"
Отправлено gres16 , 24-Янв-05 14:19 
>>Почему-то printf "\x2b" так и выводит \x2b
>
>printf $'\x2b'


Извините, но Illegal variable name. говорит....

Может кто что скажет-таки?

Неужели никто форму на Sell не обрабатывал?


"Как отобразить символ по его hex-коду  в Shell"
Отправлено chip , 24-Янв-05 16:59 
>>>Почему-то printf "\x2b" так и выводит \x2b
>>
>>printf $'\x2b'
>
>
>Извините, но Illegal variable name. говорит....

я так полагаю, у Вас [t]csh.


"Как отобразить символ по его hex-коду  в Shell"
Отправлено gres16 , 24-Янв-05 17:23 
>>>>Почему-то printf "\x2b" так и выводит \x2b
>>>
>>>printf $'\x2b'
>>
>>
>>Извините, но Illegal variable name. говорит....
>
>я так полагаю, у Вас [t]csh.

В скрипте я используй /bin/sh


"Как отобразить символ по его hex-коду  в Shell"
Отправлено SergeiZz , 25-Янв-05 09:48 
>>>>>Почему-то printf "\x2b" так и выводит \x2b
>>>>
>>>>printf $'\x2b'
>>>
>>>
>>>Извините, но Illegal variable name. говорит....
>>
>>я так полагаю, у Вас [t]csh.
>
>В скрипте я используй /bin/sh
А ls -l /bin/sh что показывает?


"Как отобразить символ по его hex-коду  в Shell"
Отправлено gres16 , 25-Янв-05 17:23 
>>>>>>Почему-то printf "\x2b" так и выводит \x2b
>>>>>
>>>>>printf $'\x2b'
>>>>
>>>>
>>>>Извините, но Illegal variable name. говорит....
>>>
>>>я так полагаю, у Вас [t]csh.
>>
>>В скрипте я используй /bin/sh
>А ls -l /bin/sh что показывает?

не ссылка, если вы об этом....


"Как отобразить символ по его hex-коду  в Shell"
Отправлено regunkov , 25-Янв-05 17:10 
>Почему-то printf "\x2b" так и выводит \x2b

bash-2.05b$ echo -e '\60\61\62\101\102\103'
012ABC

Восмеричная система.


"Как отобразить символ по его hex-коду  в Shell"
Отправлено gres16 , 25-Янв-05 17:24 
>>Почему-то printf "\x2b" так и выводит \x2b
>
>bash-2.05b$ echo -e '\60\61\62\101\102\103'
>012ABC
>
>Восмеричная система.


а нужна именно 16-тиричная...


"Как отобразить символ по его hex-коду  в Shell"
Отправлено gres16 , 26-Янв-05 22:30 
Help хоть кто-нибудь

"Как отобразить символ по его hex-коду  в Shell"
Отправлено Soldier , 27-Янв-05 07:26 
>Help хоть кто-нибудь
Ну не знаю. У меня printf "\x2b\n"  выдает +. Может какой-нибудь изврат попробовать типа
echo | awk '{printf ("\x2b\n"); }'  
Или перл привлечь или C.


"Как отобразить символ по его hex-коду  в Shell"
Отправлено regunkov , 27-Янв-05 13:29 
>>>Почему-то printf "\x2b" так и выводит \x2b
>>
>>bash-2.05b$ echo -e '\60\61\62\101\102\103'
>>012ABC
>>
>>Восмеричная система.
>
>
>а нужна именно 16-тиричная...

Может можно как и попроще, но я решил в лоб.

str="30;31;32;2b;41;42;43"
str=$(echo -n ${str} | tr [[:lower:]] [[:upper:]])
str=$(echo -n \\; echo "ibase=16; obase=8; ${str}" | bc | tr '\n' '\\' | sed 's/\\$//')
echo -e ${str}


"Как отобразить символ по его hex-коду  в Shell"
Отправлено gres16 , 30-Янв-05 09:57 
>
>str="30;31;32;2b;41;42;43"
>str=$(echo -n ${str} | tr [[:lower:]] [[:upper:]])
>str=$(echo -n \\; echo "ibase=16; obase=8; ${str}" | bc | tr '\n'
>'\\' | sed 's/\\$//')
>echo -e ${str}

Слишком уж мудрено :) Прийдется просто sed'ом заменить...


"Как отобразить символ по его hex-коду  в Shell"
Отправлено ACCA , 01-Фев-05 00:37 
>Почему-то printf "\x2b" так и выводит \x2b

sh-2.05b$ printf "\x2b\n"
+
sh-2.05b$ sh --version
GNU bash, version 2.05b.0(1)-release (i386-pc-linux-gnu)
Copyright (C) 2002 Free Software Foundation, Inc.


"Как отобразить символ по его hex-коду  в Shell"
Отправлено chip , 03-Фев-05 16:38 
>sh-2.05b$ sh --version
>GNU bash,
^^^^^^^^^

+++ version 2.05b.0(1)
    ^^^^^^^^^^^^^^^^^^

~ % printf "\x2b\n"
x2b
~ % uname -rs
FreeBSD 5.3-RELEASE
~ %



"Как отобразить символ по его hex-коду  в Shell"
Отправлено Soldier , 03-Фев-05 19:41 
>>sh-2.05b$ sh --version
>>GNU bash,
>^^^^^^^^^
>
>+++ version 2.05b.0(1)
>    ^^^^^^^^^^^^^^^^^^
>
>~ % printf "\x2b\n"
>x2b
>~ % uname -rs
>FreeBSD 5.3-RELEASE
>~ %

У  bash есть свой встроенный printf и если его (bash) поставить, то должно отобразиться как надо. Кстати в Линукс внешний printf тоже нормально это дело понимает и отображает.


"Как отобразить символ по его hex-коду  в Shell"
Отправлено gres16 , 06-Фев-05 13:09 
Сменил все символы sed-ом, и не парюсь, ибо время поджимает - а работает нормально.

"Как отобразить символ по его hex-коду  в Shell"
Отправлено chip , 07-Фев-05 01:07 
>>>sh-2.05b$ sh --version
>>>GNU bash,
>>^^^^^^^^^
>>
>>+++ version 2.05b.0(1)
>>    ^^^^^^^^^^^^^^^^^^
>>
>>~ % printf "\x2b\n"
>>x2b
>>~ % uname -rs
>>FreeBSD 5.3-RELEASE
>>~ %
>
>У  bash есть свой встроенный printf и если его (bash) поставить,

ну это я понимаю :) Мне уже просто самому стало интересно.

>Кстати в Линукс внешний printf тоже
>нормально это дело понимает и отображает.

не знаю, что там идет с Линуксом.

~ % /usr/bin/printf "\x2b\n"
x2b
~ %

все для той же версии FreeBSD :)


"Как отобразить символ по его hex-коду  в Shell"
Отправлено Soldier , 07-Фев-05 15:18 
/usr/bin/printf --version

printf (GNU sh-utils) 2.0.11
Автор программы -- David MacKenzie.

Copyright (C) 2000 Free Software Foundation, Inc.
Это свободная программа; подробности об условиях распространения
смотрите в исходном тексте.  Мы НЕ предоставляем гарантий; даже гарантий
КОММЕРЧЕСКОЙ ПРИГОДНОСТИ или ПРИГОДНОСТИ ДЛЯ КАКОЙ-ЛИБО ЦЕЛИ.

А у вас? Тоже интересно стало :)


"Как отобразить символ по его hex-коду  в Shell"
Отправлено ACCA , 09-Фев-05 22:56 
/usr/bin/printf --version
printf (GNU coreutils) 5.2.1
Written by David MacKenzie.

Copyright (C) 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


"Как отобразить символ по его hex-коду  в Shell"
Отправлено Soldier , 10-Фев-05 10:06 
>/usr/bin/printf --version
>printf (GNU coreutils) 5.2.1
>Written by David MacKenzie.
>
>Copyright (C) 2004 Free Software Foundation, Inc.
>This is free software; see the source for copying conditions.  There
>is NO
>warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Ну у вас судя по всему тоже Линуксовый, причем из последних дистров. Мне вот как оно во Фре интересно :)


"Как отобразить символ по его hex-коду  в Shell"
Отправлено XAnder , 11-Фев-05 19:18 
>Ну у вас судя по всему тоже Линуксовый, причем из последних дистров.
>Мне вот как оно во Фре интересно :)

FreeBSD 4.10

% man printf
...
BUGS
...
     ANSI hexadecimal character constants were deliberately not provided.
...
%

Может, в этом дело?

printf во фре не GNUтый, а свой (--version не работает :) )


"Как отобразить символ по его hex-коду  в Shell"
Отправлено Agp , 15-Фев-05 08:39 
У меня во FreeBSD, если внутренний башевский printf отрабатывает то будет нормальный плюс, если /usr/bin/printf то фигня, наверно по указанной выше причине:
BUGS
...
     ANSI hexadecimal character constants were deliberately not provided.
...
В скрипте нужно поставить #!/usr/local/bin/bash и будет номана

"Как отобразить символ по его hex-коду  в Shell"
Отправлено chip , 17-Фев-05 10:57 
>В скрипте нужно поставить #!/usr/local/bin/bash и будет номана

#!/usr/bin/env bash

корректнее...

ps: тащить за собой bash из-за банальго "hex-преобразования" :(. ИМХО, решение с sed'ом куда более красивым видится.


"Как отобразить символ по его hex-коду  в Shell"
Отправлено gres16 , 19-Фев-05 09:49 
>ps: тащить за собой bash из-за банальго "hex-преобразования" :(.
Это точно!

>ИМХО, решение с
>sed'ом куда более красивым видится.

Да  с sed'ом не очень красиво, но униврсально! :)