"Шестнадцатеричное" значение 0x0900
, которое вы написали, является в точности значением кодовой точки UNICODE, которая также находится в шестнадцатеричном формате.
шестнадцатеричный код 0900 (вместо अ)
Я считаю, что вы имеете в виду шестнадцатеричный код UNICODE: U0905
.
Персонаж в U-0900 не тот, который вы использовали: अ
.
Этот символ - U0905 , часть этой страницы Unicode или перечисленный на этой странице .
В bash
(установлен по умолчанию в Ubuntu) или непосредственно с программой по адресу: / usr / bin / printf
(но не с sh
printf ), символ Unicode может быть создан с помощью:
$ printf '\u0905'
अ
$ /usr/bin/printf '\u0905'
अ
Однако этот символ, который происходит из номера кодовой точки, может быть представлен несколькими потоками байтов в зависимости от того, какая кодовая страница используется.
Должно быть очевидно, что \ U0905
- это 0x09 0x05
в UTF-16 (UCS-2 и т. Д.)
и 0x00 0x00 0x09 0x05
в UTF-32.
Это может быть неочевидно, но в utf-8 это представлено как 0xe0 0xa4 0x85
:
$ /usr/bin/printf '\u0905' | od -vAn -tx1
e0 a4 85
Если локаль вашей консоли похожа на en_US. UTF-8
.
И я говорю о оболочке, потому что она преобразует строку в то, что получает приложение. Это:
grep "$(printf '\u0905')" file
заставляет grep «видеть» нужный вам символ.
Чтобы понять строку выше, вы можете использовать echo:
$ echo grep "$(printf '\u0905')" file
grep अ file
Затем мы можем построить диапазон символов по вашему запросу:
$ echo grep "$(printf '[\u0905-\u097f]')" file
grep [अ-ॿ] file
Это ответ на ваш вопрос:
Как я могу использовать шестнадцатеричный код вместо अ и व?