将数字转换为字母

时间:2014-05-07 12:18:05

标签: linux bash

我想将数字从1转换为26到拉丁语alpgabet {a-z}。 1对应于“a”,2对应于“b”,26对应于“z”

以下命令仅适用于单位数字:

echo "$i" | tr 123456789 abcdefghi
例如

echo "1" | tr 0123456789 abcdefghi

会产生“a”

你怎么能这样做:

echo "$i" | tr 01234567891011121314151617181920212223 abcdefghijklmnopqrstuvwxyz

2 个答案:

答案 0 :(得分:2)

tr仅从一个字符转换为另一个字符。您需要通过awk生成表达式:

echo "$i" | awk 'chr($1+48)' # This only handles the numbers
echo "$i" | awk 'chr($1+87)' # This only handles lowercase

但请注意,这不会考虑您正在寻找的特定模式(0-9a-z)。如果你想在单个表达式中使用它们,你需要做更多的工作来根据它们的序数ASCII值来区分字符。

答案 1 :(得分:-2)

十六进制可以像-e选项

一样简单地回显
echo -e "\x41\x42\x43"

打印

ABC

你如何分开你的整数?您是否理解11可以解释为11或1,1?