[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Linux-31] Remplacer des lettres par des nombres avec tr
- To: linux-31@culte.org
- Subject: Re: [Linux-31] Remplacer des lettres par des nombres avec tr
- From: manu chez Z <emmanuel.courcelle@zaclys.net>
- Date: Thu, 5 Mar 2020 22:16:04 +0100
- Authentication-results: pic2s.le-pic.org; dkim=pass (1024-bit key; secure) header.d=zaclys.net header.i=@zaclys.net header.b="asBHxIl6"; dkim-atps=neutral
- Authentication-results: mail.zaclys.net; dmarc=fail (p=reject dis=none) header.from=zaclys.net
- Authentication-results: mail.zaclys.net; spf=fail smtp.mailfrom=emmanuel.courcelle@zaclys.net
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=zaclys.net; s=default; t=1583442965; bh=5CakYVZrnmN9EN1s8UByEvnnNbxt4mD+T88LYK4QjGA=; h=Reply-To:Subject:To:References:From:Date:In-Reply-To:From; b=asBHxIl6/xa/WV8pd18fg0Kv7pa+8ir65zOscSfybtyCdDwNdD6XTSRSW7Xt7UcBQ KCP04lEI/iRQkRF+kL/kvmD0LGmrySUXEMfl9epXkQJF/T8aNZefvJPONVo+Onzop4 OGlyvhSBEWXpKObtNBp0TRRW8AYkBnVkIBJ0wQQI=
- Dmarc-filter: OpenDMARC Filter v1.3.2 mail.zaclys.net 025LG4xv022593
- In-reply-to: <df6a92a068af668b41c4442cb7f7c5563d914038.camel@free.fr>
- References: <df6a92a068af668b41c4442cb7f7c5563d914038.camel@free.fr>
- Reply-to: emmanuel.courcelle@zaclys.net
- User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.4.1
Le 04/03/2020 à 23:35, Claude MICOUIN
(via linux-31 Mailing List) a écrit :
Bonsoir la liste,
Je cherche à remplacer chaque lettre d'un fichier par leur numéro
d'ordre dans l'alphabet:
a -> 1
b -> 2
etc.
Ça marche très bien jusqu'à 9 avec la commande tr
$ echo 'b f a i c h' |tr "[a-k]" "[0-9]"
1 5 0 8 2 7
Mais ça se gâte dès qu'on arrive à un nombre à deux chiffres:
$ echo 'b f a i c h' |tr "[a-z]" "[0-26]"
1 ] 0 ] 2 ]
J'ai essayé de changer les " pour des ' dans tous les sens, aucun
résultat.
Quelqu'un saurait où ça foire ?
Merci.
Bonne soirée.
Claude MICOUIN
Bonsoir
tr remplace caractère par caractère, et il n'est
donc pas capable de remplacer un caractère par un nombre à deux
chiffres. Et lorsque tu écris 0-26 il comprend "0 à 2 et 6", soit
4 caractères. De plus les [] sont comptés comme des caractères
comme les autres. Dans ton exemple il fait les remplacements
suivants:
[ -> [
a -> 0
b -> 1
c -> 2
d -> 6
e -> ]
f -> ]
...
z -> ]
Les autres caractères ne seront pas remplacés. L'exemple suivant
montre bien comment ça fonctionne:
echo "a b c d e f g h i j k l" | tr "a-f" "0-26"
0 1 2 6 6 6 g h i j k l
Amicalement,
Emmanuel