Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 如何仅使用基本awk打印字符的ASCII值_Unix_Shell_Awk - Fatal编程技术网

Unix 如何仅使用基本awk打印字符的ASCII值

Unix 如何仅使用基本awk打印字符的ASCII值,unix,shell,awk,Unix,Shell,Awk,我只需要在awk中打印给定字符的ASCII值 下面的代码将0作为输出: echo a | awk '{ printf("%d \n",$1); }' 这似乎不是一个微不足道的问题。我使用查找数组找到了这种方法,该数组至少适用于a-Z: BEGIN { convert="ABCDEFGHIJKLMNOPQRSTUVWXYZ" } { num=index(convert,substr($0,2,1))+64; print num } 请参阅awk手册,了解您可以使用的信息。但是

我只需要在awk中打印给定字符的ASCII值

下面的代码将
0
作为输出:

echo a | awk '{ printf("%d \n",$1); }'

这似乎不是一个微不足道的问题。我使用查找数组找到了这种方法,该数组至少适用于a-Z:

 BEGIN { convert="ABCDEFGHIJKLMNOPQRSTUVWXYZ" } 
       { num=index(convert,substr($0,2,1))+64; print num }
请参阅awk手册,了解您可以使用的信息。但是由于您使用的是awk,所以应该使用某些版本的shell,例如bash。那么为什么不使用外壳呢

$ printf "%d" "'a"
97
仅使用基本awk(甚至不使用gawk,因此以下内容应适用于所有BSD和Linux变体):


$echo a | awk'BEGIN{for(n=0;要使此解决方案起作用,我需要按顺序为ASCII表中的所有字符创建查找数组。是的,这是正确的。不过它只有127个值,所以没什么大不了的。很好!注意,您可以直接说
echo 97 | awk'{printf(%c',$1)}'
并获得
a
$ echo a | awk 'BEGIN{for(n=0;n<256;n++)ord[sprintf("%c",n)]=n}{print ord[$1]}'
97
$ echo 97 | awk 'BEGIN{for(n=0;n<256;n++)chr[n]=sprintf("%c",n)}{print chr[$1]}'
a