# SED + addition calculation before substitution

**URL:** <https://www.debian-fr.org/t/sed-addition-calculation-before-substitution/87174>\
**Category:** Programmation\
**Created:** [Septembre 23, 2022, 3:09 UTC](https://www.debian-fr.org/t/sed-addition-calculation-before-substitution/87174 "2022-09-23T15:09:28Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![anon36725218](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/8e8cbc/32.png) [@anon36725218](https://www.debian-fr.org/u/anon36725218)\
**Post date:** [Septembre 23, 2022, 3:09 UTC](https://www.debian-fr.org/t/sed-addition-calculation-before-substitution/87174/1 "2022-09-23T15:09:28Z")

</div>

Bonjour à toutes et à tous.

Je cherche comment-faire pour calculer avant de remplacer un nombre avec la commande `sed`.

Par exemple :

Ici j’ai parsé une date par AAAA MM DD et un nombre que je souhaiterais additionner - ce serait le retour `\\4`

```
echo 2021092301 | sed -Er 's/^([0-9]{0,4})([0-9]{0,2})([0-9]{0,2})(.*)/'`date +%Y`:\\2:\\3\ \\4'/'
2022:09:23 01

```

Le retour «&nbsp;normal&nbsp;» pour l’exemple

```
echo 2021092301 | sed -Er 's/^([0-9]{0,4})([0-9]{0,2})([0-9]{0,2})(.*)/'`date +%Y`\\2\\3`vs=\\4;echo $((vs+1))`'/'
202209235

```

Prend 4 et ajoute 1 😕

```
echo 2021092301 | sed -Er 's/^([0-9]{0,4})([0-9]{0,2})([0-9]{0,2})(.*)/'`date +%Y`\\2\\3`vs=$4;echo $((vs+1))`'/'
202209231

```

Ne trouve pas `$4` écrit 1

```
echo 2021092301 | sed -Er 's/^([0-9]{0,4})([0-9]{0,2})([0-9]{0,2})(.*)/'`date +%Y`:\\2:\\3\ $'\\4+1''/'
2022:09:23 01+1

```

Trouve `$'\\4'` mais n’additionne pas 😕

* * *

J’ai trouvé cet exemple mais ici c’est toute la chaine :

```
echo 2021092301 | sed -E 's/^(.*)/echo \$(( & + 3 ))/e'
2021092304

```

Ce n’est pas cela que je souhaite faire.

* * *

Qui pourrait me dire comment-faire ?

Merci à vous.

> **C’est pour faire un truc du genre mais pas pareil**
>
> ```
> $ZONE='domain.tld'
> $ZONEFILE ='/etc/bind/masters/domain.tld.host'
> SERIAL=`/usr/sbin/named-checkzone $ZONE $ZONEFILE | egrep -ho '[0-9]{10}'`
> sed (-i) 's/'$SERIAL'/'$(($SERIAL+1))'/' $ZONEFILE
> 
> ```
> 
> `sed -i` remplace dans le fichier ATTENTION 🙂 Supprimer le `-i` pour voir la sortie sans modifier le fichier.

😉

Salutations,  
Romain

---

<div class="post-metadata">

**Author:** ![anon36725218](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/8e8cbc/32.png) [@anon36725218](https://www.debian-fr.org/u/anon36725218)\
**Post date:** [Septembre 23, 2022, 4:28 UTC](https://www.debian-fr.org/t/sed-addition-calculation-before-substitution/87174/2 "2022-09-23T16:28:42Z")

</div>

J’arrive à faire çà :

```
# echo $(($(echo "2021092301" | sed -r 's/^([0-9]{0,4})([0-9]{0,2})([0-9]{0,2})(.*)/\1+3/')))
2024
# echo $(($(echo "2021092301" | sed -r 's/^([0-9]{0,4})([0-9]{0,2})([0-9]{0,2})(.*)/\2+3/')))
bash: 09 : valeur trop grande pour la base (le symbole erroné est « 09 »)
# echo $(($(echo "2021092301" | sed -r 's/^([0-9]{0,4})([0-9]{0,2})([0-9]{0,2})(.*)/\3+3/')))
26
# echo $(($(echo "2021092301" | sed -r 's/^([0-9]{0,4})([0-9]{0,2})([0-9]{0,2})(.*)/\4+3/')))
4

```

Bizarre !

🙄

---

<div class="post-metadata">

**Author:** ![anon29980398](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@anon29980398](https://www.debian-fr.org/u/anon29980398)\
**Post date:** [Septembre 23, 2022, 7:11 UTC](https://www.debian-fr.org/t/sed-addition-calculation-before-substitution/87174/4 "2022-09-23T19:11:18Z")

</div>

Bonjour

> [@anon36725218](#):
>
> ```auto
> …
> bash: 09 : valeur trop grande pour la base (le symbole erroné est « 09 »)
> …
> 
> ```

Le shell `bash`, interprète les valeurs numériques commençant par le chiffre `0` comme des valeurs numériques exprimées en base 8 \<=\> base octale

```plaintext
michel@deb114x:~$ echo $(( 10 + 1 ))
11
michel@deb114x:~$ 

```

```plaintext
michel@deb114x:~$ echo $(( 010 + 1 ))
9
michel@deb114x:~$ 

```

```plaintext
michel@deb114x:~$ echo $(( 20 * 1 ))
20
michel@deb114x:~$ 

```

```plaintext
michel@deb114x:~$ echo $(( 020 * 1 ))
16
michel@deb114x:~$ 

```

```plaintext
michel@deb114x:~$ echo $(( 8 * 1 ))
8
michel@deb114x:~$ 

```

```plaintext
michel@deb114x:~$ echo $(( 08 * 1 ))
bash: 08 : valeur trop grande pour la base (le symbole erroné est « 08 »)
michel@deb114x:~$ 

```

---

<div class="post-metadata">

**Author:** ![anon36725218](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/8e8cbc/32.png) [@anon36725218](https://www.debian-fr.org/u/anon36725218)\
**Post date:** [Septembre 23, 2022, 7:41 UTC](https://www.debian-fr.org/t/sed-addition-calculation-before-substitution/87174/5 "2022-09-23T19:41:56Z")

</div>

> [@anon29980398](#):
>
> Bonjour

Bonsoir.. essaies `bc- l`

C’est du m’impo(r)te koi …

Qui me donne une réponse..

> **Le pourquoi - Hors sujet :)**
>
> J’essaie, je veut faire un script pour Let’Encript et plus…
> 
> Mon server DNS est propre, il n’pas chez un fournisseur… `nsupdate` ok//bientôt… -7days - Je n’ai donc pas d’API style `acme.sh` pour mettre à jour les zone/dns tous les mois (pour DNSSEC et tous les 3 mois pour let’s encrypt - il faut, donc que je parse la date de me zone DNS - entre autre.
> 
> [https://dnsviz.net/d/ipv10.net/dnssec/](https://dnsviz.net/d/ipv10.net/dnssec/)
> 
> Algorith 13 (ECDSAP256SHA256) c’est mauvais - pas encore apprécié par tous…  
> [https://www.cloudflare.com/fr-fr/dns/dnssec/ecdsa-and-dnssec/](https://www.cloudflare.com/fr-fr/dns/dnssec/ecdsa-and-dnssec/)
> 
> j’ai mis en Algo 8 (RSASHA256) pour les noms de dom courants 🤬
> 
> [DNSSEC Guide — BIND 9 9.18.6 documentation](https://bind9.readthedocs.io/en/v9_18_6/dnssec-guide.html)

☹

---

<div class="post-metadata">

**Author:** ![anon29980398](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@anon29980398](https://www.debian-fr.org/u/anon29980398)\
**Post date:** [Septembre 24, 2022, 12:02 UTC](https://www.debian-fr.org/t/sed-addition-calculation-before-substitution/87174/6 "2022-09-24T00:02:43Z")

</div>

Avec `bash` :

```nohighlight
michel@deb114x:~$ val=2021092301
michel@deb114x:~$ nbr=${val:8:2}
michel@deb114x:~$ echo "${val:0:4}:${val:4:2}:${val:6:2} $(printf '%02d' $((${nbr#0*} + 1 )))"
2021:09:23 02
michel@deb114x:~$ 

```

---

<div class="post-metadata">

**Author:** ![anon36725218](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/8e8cbc/32.png) [@anon36725218](https://www.debian-fr.org/u/anon36725218)\
**Post date:** [Septembre 24, 2022, 12:20 UTC](https://www.debian-fr.org/t/sed-addition-calculation-before-substitution/87174/7 "2022-09-24T12:20:47Z")

</div>

Merci beaucoup @anon29980398, bonjour 🙂 J’n’suis pas RH 🤡 😌

Et si je te demandais,

> [@anon29980398](#):
>
> `michel@deb114x:~$ nbr=${val:8:2}`

que je ne sais pas si le nombre est de 1 ou 2 ou 3 ou 4 caractères ou plus 😉 - c’est pour le «&nbsp;tuto&nbsp;» ici-même. Je devrais écrire comment ? Comme cela ?

`michel@deb114x:~$ nbr=${val:8:*}`

ou `michel@deb114x:~$ nbr=${val:8:strlen(val)}`

¿ comment compter le nombre de caractères d’une valeur d’une `$variable` en BASH ? comme `strlen` en PHP - Merci.

Sinon, je trouve cela plus logique, merci - ok - avec des expressions régulières c’est normal puisque on a «&nbsp;piquer&nbsp;» les 4 premiers caractères, donc, on continue de 0 plus 2 etc… dans la/les parenthèses capturantes :

1. pour la date de 0 plus 4 caractères
2. pour le mois de 4 plus 2 caractères.
3. pour le jour de 6 plus 2 caractères.

Et en plus, pourrais tu m’expliquer le `$(printf '%02d')` à quoi ou comment on s’en sert.

- `printf` ¿ permet de récupérer des valeurs avec `%` 😕 comment dit-on ; en cache ?
- `%02` ¿ correspond à quoi ?
- `d` ¿ correspond à quoi ?
- `${nbr#0*}` ¿ est, doit être la valeur entière (`#0`) de la variable `$nbr` dirais-je. Étoile (`*`) - pourquoi ? 🙂

Merci encore @anon29980398 !

Romain 🙂

---

<div class="post-metadata">

**Author:** ![anon36725218](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/8e8cbc/32.png) [@anon36725218](https://www.debian-fr.org/u/anon36725218)\
**Post date:** [Septembre 24, 2022, 12:34 UTC](https://www.debian-fr.org/t/sed-addition-calculation-before-substitution/87174/8 "2022-09-24T12:34:04Z")

</div>

> [@anon29980398](#):
>
> Le shell `bash` , interprète les valeurs numériques commençant par le chiffre `0` comme des valeurs numériques exprimées en base 8 \<=\> base octale

Tiens au fait çà me fait penser à cela - **UN GROS TRUC QUI FAIT TROP PEUR** 🤩 (en espérant que vous savez çà depuis le début - avant de faire - de commencer l’informatique 😕 🙃 et de ne pas avoir de fausses données, ou ne pas avoir des statistiques trompeuses etc ^^ :

`echo $((145/8*456))` **mauvais calcul** , retourne 8208 !!  
`echo 145/8*456 | bc -l` **calcul correct** , retourne **8265.00000000000000000000**

ou encore :  
`echo 12*3.02 | bc -l` **calcul correct** , arrive bien à multiplier avec la virgule, retourne **36.24**.

```
# echo $((12*3.02))
bash: 12*3.02 : erreur de syntaxe : opérateur arithmétique non valable (le symbole erroné est « .02 »)
Vous avez du nouveau courrier dans /var/mail/root
# echo $((12*3,02))
2

```

CALCUL FAUX !

```
apt show bc
...
Description: langage de calculateur de précision arbitraire bc GNU
 GNU bc est un langage algébrique interactif avec une précision arbitraire
 qui suit le standard préliminaire POSIX 1003.2, avec plusieurs extensions
 incluant des noms de variables multicaractères, une instruction « else » et
 des expressions booléennes complètes. GNU bc ne nécessite pas le programme
 séparé GNU dc.

```

Cordialement,  
Romain

 ![IMG20220924151448](https://www.debian-fr.org/uploads/default/original/2X/e/eeb9d631fc76069095d3941e859af7ffcb173927.jpeg)

NdMoi-même : Je ne sais même plus faire de division sur papier 😭

😉

---

<div class="post-metadata">

**Author:** ![anon36725218](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/8e8cbc/32.png) [@anon36725218](https://www.debian-fr.org/u/anon36725218)\
**Post date:** [Septembre 24, 2022, 4:23 UTC](https://www.debian-fr.org/t/sed-addition-calculation-before-substitution/87174/9 "2022-09-24T16:23:58Z")

</div>

Super site : [http://www.gecif.net](http://www.gecif.net) 😉 c’est qui ? ici 😌

Super page : linux / #shell : [Awk, Sed et Grep](http://www.gecif.net/articles/linux/shell.html)

J’aime bien cette ligne :

> [@](#):
>
> On peut aussi utiliser simplement les possibilités de calcul du shell bash lui même, mais cette fois on doit faire les calculs en nombres entiers seulement :
> 
> `echo $((2015000/19))` ce qui donne 106052 et on en déduit que la partie décimale de 2015/19 est 0.052

😉

---

<div class="post-metadata">

**Author:** ![anon29980398](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@anon29980398](https://www.debian-fr.org/u/anon29980398)\
**Post date:** [Septembre 24, 2022, 6:21 UTC](https://www.debian-fr.org/t/sed-addition-calculation-before-substitution/87174/10 "2022-09-24T18:21:54Z")

</div>

> [@anon36725218](#):
>
> …Et si je te demandais,
> 
> > [@anon29980398](#):
> >
> > `michel@deb114x:~$ nbr=${val:8:2}`
> 
> que je ne sais pas si le nombre est de 1 ou 2 ou 3 ou 4 caractères ou plus 😉 - c’est pour le « tuto » ici-même. Je devrais écrire comment ?  
> …

Si on ne sait pas quel est le nombre de caractères qui suivent le 8ème caractère de la chaîne de caractères qui a été assignée comme valeur à la variable nommée `nbr`, il suffira de ne pas spécifier ce nombre de caractères :

```plaintext
michel@deb114x:~$ val=202109231
michel@deb114x:~$ echo ${val:8}
1
michel@deb114x:~$ 

```

```plaintext
michel@deb114x:~$ val=20210923000001
michel@deb114x:~$ echo ${val:8}
000001
michel@deb114x:~$ 

```

* * *

> [@anon36725218](#):
>
> … comment compter le nombre de caractères d’une valeur d’une `$variable` en BASH ? …

```plaintext
michel@deb114x:~$ val=2021092301
michel@deb114x:~$ echo ${#val}
10
michel@deb114x:~$ 

```

```plaintext
michel@deb114x:~$ val=20210923000001
michel@deb114x:~$ echo ${#val}
14
michel@deb114x:~$ 

```

* * *

> [@anon36725218](#):
>
> … pourrais tu m’expliquer le `$(printf '%02d')` à quoi ou comment on s’en sert. …

Voir le **man** uel de la commande `printf` :

```plaintext
man printf

```

`printf '`%02d`' $valeurDécimaleÀformater`

La chaîne de formatage :

- Compléter avec des zéros
- Jusqu’à ce que le nombre soit affiché sur deux chiffres
- La valeur à formater qui est donnée en paramètre est une valeur décimale

* * *

`${nbr#0*}`  
C’est tombé en marche dans ce cas précis, mais en fait je me suis trompé,  
j’aurais plutôt dû utiliser : `${nbr##+(0)}`

\<=\> supprimer le suite de caractères `0` qui sont au début de la chaîne de caractères qui a été assignée à la variable nommée `nbr`

```plaintext
michel@deb114x:~$ nbr='000010020345'
michel@deb114x:~$ echo ${nbr##+(0)}
10020345
michel@deb114x:~$ 

```

```plaintext
michel@deb114x:~$ nbr='aaaaaaxyz'
michel@deb114x:~$ echo ${nbr##+(a)}
xyz
michel@deb114x:~$ 

```

---

<div class="post-metadata">

**Author:** ![anon36725218](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/8e8cbc/32.png) [@anon36725218](https://www.debian-fr.org/u/anon36725218)\
**Post date:** [Septembre 24, 2022, 8:24 UTC](https://www.debian-fr.org/t/sed-addition-calculation-before-substitution/87174/11 "2022-09-24T20:24:02Z")

</div>

> [@anon29980398](#):
>
> Si on ne sait pas quel est le nombre de caractères qui suivent le 8ème caractère

C de toi çà … [http://www.gecif.net/](http://www.gecif.net/) merci \<3 ou, tu fais exprès …

pardon, oui, donc, le huitième … caractères .. oui…

---

<div class="post-metadata">

**Author:** ![anon36725218](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/8e8cbc/32.png) [@anon36725218](https://www.debian-fr.org/u/anon36725218)\
**Post date:** [Septembre 24, 2022, 8:27 UTC](https://www.debian-fr.org/t/sed-addition-calculation-before-substitution/87174/12 "2022-09-24T20:27:00Z")

</div>

> [@anon29980398](#):
>
> Si on ne sait pas quel est le nombre de caractères qui suivent le 8ème caractère de la chaîne de caractères qui a été assignée comme valeur à la variable nommée `nbr` , il suffira de ne pas spécifier ce nombre de caractères :

Ah ok…

---

<div class="post-metadata">

**Author:** ![anon36725218](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/8e8cbc/32.png) [@anon36725218](https://www.debian-fr.org/u/anon36725218)\
**Post date:** [Septembre 24, 2022, 8:29 UTC](https://www.debian-fr.org/t/sed-addition-calculation-before-substitution/87174/13 "2022-09-24T20:29:07Z")

</div>

> [@anon29980398](#):
>
> Voir le **man** uel de la commande `printf` :
> 
> ```auto
> man printf
> 
> ```
> 
> `printf '` %02d `' $valeurDécimaleÀformater`
> 
> La chaîne de formatage :
> 
> - Compléter avec des zéros
> - Jusqu’à ce que le nombre soit affiché sur deux chiffres
> - La valeur à formater qui est donnée en paramètre est une valeur décimale

Ok… décimale comme `d` et donc, `2 chiffes` (décimal, donc 😍)..

---

<div class="post-metadata">

**Author:** ![anon36725218](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/8e8cbc/32.png) [@anon36725218](https://www.debian-fr.org/u/anon36725218)\
**Post date:** [Septembre 24, 2022, 8:31 UTC](https://www.debian-fr.org/t/sed-addition-calculation-before-substitution/87174/14 "2022-09-24T20:31:03Z")

</div>

> [@anon29980398](#):
>
> `${nbr#0*}`  
> C’est tombé en marche dans ce cas précis, mais en fait je me suis trompé,  
> j’aurais plutôt dû utiliser : `${nbr##+(0)}`
> 
> \<=\> supprimer le suite de caractères `0` qui sont au début de la chaîne de caractères qui a été assignée à la variable nommée `nbr`
> 
> ```auto
> michel@deb114x:~$ nbr='000010020345'
> michel@deb114x:~$ echo ${nbr##+(0)}
> 10020345
> michel@deb114x:~$ 
> 
> ```
> 
> ```auto
> michel@deb114x:~$ nbr='aaaaaaxyz'
> michel@deb114x:~$ echo ${nbr##+(a)}
> xyz
> michel@deb114x:~$ 
> 
> ```

OK, …pfff… super génial. mme.c.fe je t’aime !

💗

Merci pour cette explication #MicP (je met un tag exprès) ;p

> **""**
>
> Comment s’appelle t’il.elle sur d’autres réseaux sociaux. 🤣

---

<div class="post-metadata">

**Author:** ![anon36725218](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/8e8cbc/32.png) [@anon36725218](https://www.debian-fr.org/u/anon36725218)\
**Post date:** [Septembre 24, 2022, 8:36 UTC](https://www.debian-fr.org/t/sed-addition-calculation-before-substitution/87174/15 "2022-09-24T20:36:52Z")

</div>

> **. (point)**
>
> Au fait comment fait-on un point du milieu ?

---

<div class="post-metadata">

**Author:** ![anon29980398](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@anon29980398](https://www.debian-fr.org/u/anon29980398)\
**Post date:** [Septembre 25, 2022, 5:20 UTC](https://www.debian-fr.org/t/sed-addition-calculation-before-substitution/87174/16 "2022-09-25T05:20:22Z")

</div>

> [@anon36725218](#):
>
> … Au fait comment fait-on un point du milieu ? …

- il y a le point médian dont le [point de code unicode](https://fr.wikipedia.org/wiki/Point_de_code) est `U+00B7`

- Il y a celui qui est utilisé en mathématiques comme signe de multiplication  
dont le point de code unicode est `U+22C5`

- Il y a la puce typographique dont le point de code unicode est `U+2022` qui est souvent utilisée pour structurer des énumérations (comme par exemple les 3 énumérations qui sont dans ce message)

* * *

Pour faire s’afficher un caractère en utilisant son point de code unicode,  
faire Ctrl+Maj+u et un **u** (en lettre minuscule) souligné s’affichera  
pour nous inviter à entrer la valeur hexadécimale du point de code unicode.  
Donc, par exemple, pour faire s’afficher la puce typographique,  
il ne restera plus qu’à entrer : `2022`

* * *

Avec la disposition clavier **Français (variante)**  
on peut faire s’afficher le point milieu utilisé pour la multiplication (`U+22C5`) en appuyant  
simultanément sur la **Maj** et la touche **étoile** du pavé numérique : Maj+\*

---

<div class="post-metadata">

**Author:** ![anon36725218](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/8e8cbc/32.png) [@anon36725218](https://www.debian-fr.org/u/anon36725218)\
**Post date:** [Septembre 25, 2022, 9:14 UTC](https://www.debian-fr.org/t/sed-addition-calculation-before-substitution/87174/17 "2022-09-25T09:14:14Z")

</div>

Okay merci beaucoup @anon29980398 🙂 pour toutes ces explications.

> **Je cherchais ce type de point -\> ·**
>
> Faire le **point milieu de l’écriture inclusive** avec un clavier ?
> 
> - Sur Mac, il est possible d’obtenir le point milieu en faisant la combinaison de touche ALT + MAJ + F.
> - Sur Windows, il faut utiliser la combinaison de touche ALT + 0183. Bref, pas facile… - je n’y arrive pas. Ce n’est pas grave. L’astuce est de faire un copier / coller depuis un texte existant 🙂

Bonne journée à vous.

Encore merci pour ces explications très technique.

---

<div class="post-metadata">

**Author:** ![anon29980398](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@anon29980398](https://www.debian-fr.org/u/anon29980398)\
**Post date:** [Septembre 25, 2022, 11:41 UTC](https://www.debian-fr.org/t/sed-addition-calculation-before-substitution/87174/18 "2022-09-25T11:41:15Z")

</div>

> [@anon36725218](#):
>
> … Sur Windows, il faut utiliser la combinaison de touche ALT + 0183 …

C’est le [point médian](https://fr.wikipedia.org/wiki/Point_m%C3%A9dian) :  
celui dont le nom unicode est `MIDDLE DOT`  
celui qui a le point de code unicode `U+00B7`  
et dont l’entité HTML est `&#183;`

* * *

Si besoin, tu pourras retrouver tous les caractères unicode dans [cette page web](https://www.utf8-chartable.de/unicode-utf8-table.pl)

* * *

Si tu utilises l’environnement de bureau XFCE,  
tu pourrais lancer, depuis ton compte utilisateur non privilégié  
cette ligne de commandes :

```auto
echo "keycode 59 = semicolon period semicolon period U00B7 U22C5 U00B7 U22C5" > ~/.Xmodmap

```

Et après le démarrage suivant de ta session XFCE (\<=\> `Déconnexion…` et s’identifier à nouveau),  
tu pourras faire s’afficher un point médian en utilisant le raccourci clavier AltGr+;  
\<=\> appuyer sur la touche AltGr  
et tout en la maintenant appuyée, appuyer ensuite sur la touche ;

Sinon, il faudra me dire quel est l’environnement de bureau que tu utilises.

---

<div class="post-metadata">

**Author:** ![anon36725218](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/8e8cbc/32.png) [@anon36725218](https://www.debian-fr.org/u/anon36725218)\
**Post date:** [Septembre 25, 2022, 3:13 UTC](https://www.debian-fr.org/t/sed-addition-calculation-before-substitution/87174/19 "2022-09-25T15:13:32Z")

</div>

> [@anon29980398](#):
>
> > [@anon36725218](#):
> >
> > … Sur Windows, il faut utiliser la combinaison de touche ALT + 0183 …
> 
> C’est le [point médian](https://fr.wikipedia.org/wiki/Point_m%C3%A9dian) :  
> celui dont le nom unicode est `MIDDLE DOT`  
> celui qui a le point de code unicode `U+00B7`  
> et dont l’entité HTML est `&#183;`

Merci oui d’accord.

> [@anon29980398](#):
>
> Si besoin, tu pourras retrouver tous les caractères unicode dans [cette page web](https://www.utf8-chartable.de/unicode-utf8-table.pl)

Ok merci 🙂

> [@anon29980398](#):
>
> Si tu utilises l’environnement de bureau XFCE,  
> tu pourrais lancer, depuis ton compte utilisateur non privilégié  
> cette ligne de commandes :
> 
> ```auto
> echo "keycode 59 = semicolon period semicolon period U00B7 U22C5 U00B7 U22C5" > ~/.Xmodmap
> 
> ```
> 
> Et après le démarrage suivant de ta session XFCE (\<=\> `Déconnexion…` et s’identifier à nouveau),  
> tu pourras faire s’afficher un point médian en utilisant le raccourci clavier AltGr+;  
> \<=\> appuyer sur la touche AltGr  
> et tout en la maintenant appuyée, appuyer ensuite sur la touche ;
> 
> Sinon, il faudra me dire quel est l’environnement de bureau que tu utilises.

Ok - Merci beaucoup @anon29980398 - Bon dimanche.

---

<div class="post-metadata">

**Author:** ![anon29980398](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@anon29980398](https://www.debian-fr.org/u/anon29980398)\
**Post date:** [Septembre 25, 2022, 4:04 UTC](https://www.debian-fr.org/t/sed-addition-calculation-before-substitution/87174/20 "2022-09-25T16:04:32Z")

</div>

Bon dimanche à toi aussi.

---

<div class="post-metadata">

**Author:** ![anon36725218](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/8e8cbc/32.png) [@anon36725218](https://www.debian-fr.org/u/anon36725218)\
**Post date:** [Septembre 26, 2022, 2:48 UTC](https://www.debian-fr.org/t/sed-addition-calculation-before-substitution/87174/21 "2022-09-26T14:48:11Z")

</div>

> [@anon29980398](#):
>
> > [@anon36725218](#):
> >
> > … comment compter le nombre de caractères d’une valeur d’une `$variable` en BASH ? …
> 
> ```auto
> michel@deb114x:~$ val=2021092301
> michel@deb114x:~$ echo ${#val}
> 10
> michel@deb114x:~$ 
> 
> ```

**Ok merci - je n’avais pas vu la réponse à ma question.**

J’allais dire c’est la même chose pour récupérer le nombre d’arguments dans un script mais ce n’est pas pareil.

Exemple : `nano exemple.sh && chmod u+x exemple.sh`

```
#!/bin/sh

echo "$# args in script $(basename ${0})"
echo "${#} args in script $(basename ${0})"
echo "${$#} ???? - script $(basename ${0})"
#echo "${#arg1} ???? - script $(basename ${0})"

echo ""
echo "Pour le fun ;)"
echo "Comment récuperer les args ?"
echo "Premier argument dans la ligne de commande $1"
echo "Deuxième argument dans la ligne de commande $2"
echo ""
echo "Est-ce obligé de faire une boucle et un switch -> case ? Et cela sur (tous) le nombres d'arguments envoyé ?"
echo ""
echo "HS ;)"

```

Exec :

```
./exemple.sh arg1=val1 arg2

```

Output :

```
2 args in script exemple.sh
2 args in script exemple.sh
19280 ???? - script exemple.sh

Pour le fun ;)
Comment récuperer les args ?
Premier argument dans la ligne de commande arg1=val1
Deuxième argument dans la ligne de commande arg2

Est-ce obligé de faire une boucle et un switch -> case ? Et cela sur (tous) le nombres d'arguments envoyé ?

HS ;)

```

😉

[Page suivante](https://www.debian-fr.org/t/sed-addition-calculation-before-substitution/87174.md?page=2)
