Estou tentando visualizar adequadamente os caracteres existentes listados no arquivo /usr/include/X11/keysymdef.h
.
Tem linhas como:
#define XK_onethird 0x0ab0 /* U+2153 VULGAR FRACTION ONE THIRD */
#define XK_twothirds 0x0ab1 /* U+2154 VULGAR FRACTION TWO THIRDS */
#define XK_onefifth 0x0ab2 /* U+2155 VULGAR FRACTION ONE FIFTH */
Eu gostaria de exibi-los como:
#define XK_onethird 0x0ab0 /* ⅓ VULGAR FRACTION ONE THIRD */
#define XK_twothirds 0x0ab1 /* ⅔ VULGAR FRACTION TWO THIRDS */
#define XK_onefifth 0x0ab2 /* ⅕ VULGAR FRACTION ONE FIFTH */
Eu tentei:
$ sed -e 's/U+\([0-9A-Fa-f]\{4\}\)/\u/' < /usr/include/X11/keysymdef.h
Isso apenas "ignora" o \u
. Então, fervendo para alguns sed
testcases com o Pilcrow "¶":
$ echo 00B6 | sed -re $'s/(....)/echo "\u00B6"/e'
¶ # Good, display works, lets get the capture group:
$ echo 00B6 | sed -re $'s/(....)/echo "\u00B6 \1"/e'
¶ 00B6 # So far, so good, lets prefix \u again:
$ echo 00B6 | sed -re $'s/(....)/echo "\u00B6 \u\1"/e'
¶ 00B6 # Huh? Ok, trying double-wrapping
$ echo 00B6 | sed -re $'s/(....)/echo "\u00B6 \u\1"/e'
¶ 00B6 # Hey, where did the '\u' go? Ok, try something else:
$ echo 00B6 | sed -re $'s/(....)/echo $(echo "\u00B6 \u\1")/e'
¶ 00B6 # I give up
(Nota: eu também agora tentei algumas variações dos itens acima com printf
. Nenhuma alteração)
O que estou perdendo? Por que não consigo usar o sinalizador de avaliação de sed
assim?
Edit: Estou ciente de que isso pode ser trabalhado com while read echo eval
e ser resolvido com outras linguagens / ferramentas, e apreciei (+ 1d) as respostas.
Para esta questão, no entanto, eu estaria mais interessado em uma solução com sed
ou saber por que os comandos acima produzem esta saída e / ou porque não é possível. Então, @IporSircer e @Patrick ou outros, você poderia gentilmente postar / alterar as respostas para incluir algo que não seja. "sed eval echo" para que eu possa marcar um como "a" resposta?