7
votes

Comment convertir des nombres aux premières lettres de l'alphabet?

J'ai un fichier avec contenu comme xxx

J'ai besoin de convertir ce type de chaînes comme ceci: xxx

donc, < Code> 12345 devrait aboutir à abcde . Je veux y parvenir via la coquille (bash). Quelle est la meilleure façon de faire cela?

Merci.


1 commentaires

Vous pouvez noter que si a 0 , b 1 , puis 12345 Si cartographier sur BCDEF et non abcde .


5 Réponses :


15
votes

Dans n'importe quel shell, vous pouvez utiliser: xxx

ou, en bash et sans tuyau: xxx

(où le double Les citations pourraient ne pas être nécessaires, mais je les utiliserais pour être sûr).


1 commentaires

Correction d'un bogue dans votre 2e exemple



3
votes

avec l'opérateur de carte de SED.

sed 'y/12345/hWa!-/' <<< '2313134'


0 commentaires

2
votes
tr 0123456789 abcdefghij < filename

1 commentaires

tr est un filtre pur - il ignore les arguments du nom de fichier



7
votes
 echo 12345 | tr '[0-9]' '[a-j]'

2 commentaires

Dis si je dois faire l'Aliter. Carte des mots vers des chiffres. Qui est, a-> 1, b-> 2 ... et ainsi de suite. Pourquoi ne pas echo bonjour | TR '[A-Z]' '[1-26]' travail?


@ user3426358 Parce que SED ne traduit que des caractères uniques. Même la traduction tr 'z' '26' seul n'est pas possible. Voir aussi y a-t-il une tr pour traduire dans des chaînes plus longues < / a>.



0
votes

Il y a plus d'une façon de le faire: xxx


1 commentaires

C'est assez obscur et indirect, même pour Perl. Il pourrait être approprié d'utiliser l'opérateur tr /// ... mais alors, c'est Perl et TMTOWTDI.