开发者

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
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜