How to convert numbers to the first letters of the alphabet?
I have a file with content like
12345
I need to convert this kind of strings like this:
"0"->&quo开发者_Go百科t;a"
"1"->"b"
...
"9"->"j"
So, 12345
should result in abcde
. I want to achieve this via the shell (bash). What is the best way to do this?
In any shell, you could use:
echo "$string" | tr 0123456789 abcdefghij
Or, in Bash and without a pipe:
tr 0123456789 abcdefghij <<< "$string"
(where the double quotes might not be necessary, but I'd use them to be sure).
echo 12345 | tr '[0-9]' '[a-j]'
With sed's map operator.
sed 'y/12345/hWa!-/' <<< '2313134'
tr 0123456789 abcdefghij < filename
There's more than one way to do it:
perl -lnaF -e 'print map chr($_+97), @F' file
abcdefghij
Here is a solution which works for all letters of the alphabet (with thanks):
inputnr=1 # a
declare -i i=$[ 97-1+${inputnr} ]
c=$(printf \\$(printf '%03o' $i))
echo "char:" $c
inputnr=26 # z
declare -i i=$[ 97-1+${inputnr} ]
c=$(printf \\$(printf '%03o' $i))
echo "char:" $c
精彩评论