如何用Unix命令行工具将十进制数文件转回ASCII文本?
如何将ASCII十进制数列表转换回文本(反向
od操作)? 我可以用以下命令将文本转换为ASCII十进制数列表:
$ echo "hello" | od -An -td1 -v -w1 104 101 108 108 111 10请问对应的反向操作是什么?如何仅使用常见的Unix命令行工具将十进制数文件转换回文本?我尝试过
printf工具,但尚未找到可行的实现方法。
方法1:用awk直接转换
这是最简洁的方式,awk能直接读取每行的十进制数并输出对应ASCII字符:
awk '{printf "%c", $1}' decimals.txt
把decimals.txt换成你的十进制数文件名即可,它会逐行读取数字,转成字符后拼接输出。
方法2:printf配合xargs
如果想用printf实现,可以借助xargs把每行的数字传给printf:
xargs -I{} printf "\\x$(printf %x {})" < decimals.txt
原理是先把十进制数转成十六进制,再用\x转义序列让printf输出对应字符。如果数字没有多余空格,也可以简化成:
xargs printf "%b" < decimals.txt
方法3:sed+bash组合
用sed把每行数字包装成printf命令,再交给bash执行:
sed 's/^/printf "\\x%x" /' decimals.txt | bash
sed会给每行数字添加printf "\\x%x"前缀,bash执行这些命令后就会输出对应的文本。
内容的提问来源于stack exchange,提问作者user448810
相关产品推荐
相关产品推荐

