Assomption: Vous essayez ceci via un tuyau.
REMARQUE: cal
imprime les codes de couleur seulement vers un tty
.
D'abord si vous allez remplacer quoi cal
envoie par le tuyau, alors vous devez vérifier quoi cal
envoie dans ce tuyau.
$ cal | od -t x1z -w$((($COLUMNS-12)/4))
0000000 20 20 20 20 20 4a 75 6c 69 20 32 30 31 35 20 20 20 20 > Juli 2015 <
0000022 20 20 20 20 0a 73 c3 b6 20 6d c3 a5 20 74 69 20 6f 6e > .s.. m.. ti on<
0000044 20 74 6f 20 66 72 20 6c c3 b6 20 20 0a 20 20 20 20 20 > to fr l.. . <
0000066 20 20 20 20 20 31 20 20 32 20 20 33 20 20 34 20 20 0a > 1 2 3 4 .<
0000110 20 35 20 5f 08 20 5f 08 36 20 20 37 20 20 38 20 20 39 > 5 _. _.6 7 8 9<
0000132 20 31 30 20 31 31 20 20 0a 31 32 20 31 33 20 31 34 20 > 10 11 .12 13 14 <
0000154 31 35 20 31 36 20 31 37 20 31 38 20 20 0a 31 39 20 32 >15 16 17 18 .19 2<
0000176 30 20 32 31 20 32 32 20 32 33 20 32 34 20 32 35 20 20 >0 21 22 23 24 25 <
0000220 0a 32 36 20 32 37 20 32 38 20 32 39 20 33 30 20 33 31 >.26 27 28 29 30 31<
0000242 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 > . <
0000264 20 20 20 20 20 20 20 20 20 20 0a > .<
0000277
Vérification des codes hexadécimaux (de od -t x1
) au dessus tu vois la séquence
35 20 5f 08 20 5f 08 36 20 20 37
où 35
(les deux premiers caractères) sont identiques à 5
et le dernier 37
est le même que 7
dans la sortie réelle (et dans le vidage ascii à droite).
Juste avant 37
vous avez quelques 20
(espaces) et il y a un 36
qui est de la 6
.
Maintenant juste à gauche de la 36
vous voyez ce que vous devez remplacer: 5f 08 20 5f 08
$ cal | sed -re 's/\x5f\x08\x20\x5f\x086/<strong>6<\/strong>/'
Juli 2015
sö må ti on to fr lö
1 2 3 4
5 <strong>6</strong> 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Voilà.
Je vous laisserai le soin de vous donner ce général.
Un conseil supplémentaire, vérifiez man 5 terminfo
pour les choses à essayer avec tput
- Cela s'adaptera autant que possible au type de terminal disponible lors de l'exécution.
Alors tput setb 6
définira la couleur d'arrière-plan 6, si le terminal en est capable. Et également tput sgr0
réinitialisera tous les paramètres de couleur sur "normal".
Et si vous dirigez la sortie tput dans, par exemple, od -t x1z
vous verrez quelle est la sortie.
Résultat final: un script beaucoup plus portable que celui utilisant echo -e ...
\x08
est le retour arrière, le suivant6
est le '6' que vous avez ci-dessus. je suggère\x08([0-9]{1,2})
pour commencer; c'est-à-dire un ou deux chiffres.