📅  最后修改于: 2023-12-03 14:57:50.249000             🧑  作者: Mango
在 Shell/Bash 中,我们可以使用工具来将文本转换为 ASCII 代码。这些代码可以用于表示非常规字符,在不支持该字符编码的系统上显示文本。
tr
命令可以用于将字符串中的字符转换为其他字符。例如,以下命令将字符串中的所有小写字母转换为大写字母:
$ echo hello world | tr '[:lower:]' '[:upper:]'
HELLO WORLD
为了将字符串转换为 ASCII 代码,我们可以使用 octal
选项。该选项允许我们使用八进制表示转换后的字符,而不是直接使用字符本身。
$ echo "Hello world" | tr -c '[:print:]' '\n' | while read -n 1 c; do printf '%03o ' "'$c"; done
104 101 108 108 111 040 119 111 114 108 100
上述命令的解释:
tr -c '[:print:]' '\n'
删除字符串中所有非可打印字符,每个字符占用一行。while read -n 1 c
逐行读取字符。printf '%03o ' "'$c"
打印字符的 ASCII 代码,并在代码前加上单引号以区分代码和字符本身。echo
命令可以用于将字符串转换为 ASCII 代码。该命令的 -n
选项允许我们禁止在输出后添加换行符。
$ echo -n "Hello world" | od -An -t o1 | tr -d ' \n'
110 145 154 154 157 040 167 157 162 154 144
上述命令的解释:
echo -n "Hello world"
输出字符串,禁止在最后添加换行符。od -An -t o1
将字符串转换为八进制代码。tr -d ' \n'
删除空格和换行符。xxd
命令可以将二进制文件或十六进制字符串转换为 ASCII 代码。该命令的 -p
选项允许我们输出仅包含代码的纯文本。
$ echo "Hello world" | xxd -p | tr -d '\n' | sed 's/\(..\)/\1 /g' | awk '{ print $0 }'
48 65 6c 6c 6f 20 77 6f 72 6c 64
上述命令的解释:
echo "Hello world"
输出字符串。xxd -p
将字符串转换为十六进制字符串。tr -d '\n'
删除换行符。sed 's/\(..\)/\1 /g'
将每两个字符之间添加一个空格。awk '{ print $0 }'
输出结果。在 Shell/Bash 中,我们可以使用 tr
、echo
或 xxd
命令将字符串转换为 ASCII 代码。这些命令通常用于表示非常规字符,在不支持该字符编码的系统上显示文本。