# Comment doubler une barre oblique inverse \\ avec tr?

**URL:** <https://www.debian-fr.org/t/comment-doubler-une-barre-oblique-inverse-avec-tr/83368>\
**Category:** Support Debian\
**Tags:** tr\
**Created:** [Novembre 23, 2020, 11:26 UTC](https://www.debian-fr.org/t/comment-doubler-une-barre-oblique-inverse-avec-tr/83368 "2020-11-23T11:26:31Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![PmGs](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/p/dfb087/32.png) [@PmGs](https://www.debian-fr.org/u/PmGs)\
**Post date:** [Novembre 23, 2020, 11:26 UTC](https://www.debian-fr.org/t/comment-doubler-une-barre-oblique-inverse-avec-tr/83368/1 "2020-11-23T11:26:31Z")

</div>

Bonjour à tous,

```auto
v='a\b';tr '\\' '\\\\' <<< "$v" -> a\b KO ???????
v='a\b';tr '\\' 'x' <<< "$v" -> axb Ok
v='a\b';v=${v/\\/\\\\};echo "$v" -> a\\b OK

```

Un lecteur peut-il expliquer pourquoi la cde via tr ne fonctionne pas?

---

<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:** [Novembre 23, 2020, 1:54 UTC](https://www.debian-fr.org/t/comment-doubler-une-barre-oblique-inverse-avec-tr/83368/2 "2020-11-23T13:54:53Z")

</div>

Bonjour

La commande **`tr`** remplace **un caractère** par **un** autre  
ou chaque caractère d’une liste de caractères  
par chaque caractère d’une autre liste de caractères :

```auto
michel@ubuT450:~$ v='a-b-c';echo "$v";tr 'a' '.' <<< "$v"
a-b-c
.-b-c
michel@ubuT450:~$ v='a-b-c';echo "$v";tr 'abc' '.' <<< "$v"
a-b-c
.-.-.
michel@ubuT450:~$ v='a-b-c';echo "$v";tr '\-' '.' <<< "$v"
a-b-c
a.b.c
michel@ubuT450:~$ v='a-b-c';echo "$v";tr '\-' '\\' <<< "$v"
a-b-c
a\b\c
michel@ubuT450:~$ v='a-b-c';echo "$v";tr '\-abc' '\\123' <<< "$v"
a-b-c
1\2\3
michel@ubuT450:~$ v='a-b-c';echo "$v";tr '\-abc' '\\' <<< "$v"
a-b-c
\\\\\
michel@ubuT450:~$ 

```

et **pas** un caractère par une chaîne de caractères  
**ni** une chaîne de caractères par un caractère ou une autre chaîne de caractères.

---

<div class="post-metadata">

**Author:** ![PmGs](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/p/dfb087/32.png) [@PmGs](https://www.debian-fr.org/u/PmGs)\
**Post date:** [Novembre 23, 2020, 2:01 UTC](https://www.debian-fr.org/t/comment-doubler-une-barre-oblique-inverse-avec-tr/83368/3 "2020-11-23T14:01:16Z")

</div>

Effectivement !  
`v='a\b';tr '\\' 'xx' <<< "$v" -> axb OK donc`

---

<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:** [Novembre 23, 2020, 2:07 UTC](https://www.debian-fr.org/t/comment-doubler-une-barre-oblique-inverse-avec-tr/83368/4 "2020-11-23T14:07:07Z")

</div>

Oui,  
Ci-dessous,  
il y a eu remplacement du caractère **\** (qui a été «&nbsp;échappé&nbsp;» par le \ qui le précède)  
par le premier caractère de l’autre liste qui est un **x**

```auto
michel@ubuT450:~$ v='a\b';echo "$v";tr '\\' 'xx' <<< "$v"
a\b
axb
michel@ubuT450:~$ v='a\b';echo "$v";tr '\\' 'xYZ' <<< "$v"
a\b
axb
michel@ubuT450:~$ 

```

Il n’y avait qu’un seul caractère dans la première liste =\> le premier caractère de l’autre liste a été utilisé pour le remplacer.

Ci-dessous, avec la même liste de caractères de remplacement,  
il y a deux caractères dans la liste des caractères à remplacer :

```auto
michel@ubuT450:~$ v='a\b';echo "$v";tr 'b\\' 'xYZ' <<< "$v"
a\b
aYx
michel@ubuT450:~$ 

```
