awk在awk命令的上下文中将ASCII转换为整数

awk在awk命令的上下文中将ASCII转换为整数,awk,ascii,printf,Awk,Ascii,Printf,我想用ASCII符号编码的值对文件进行一些操作 我有一个测试文件,看起来像这样: a> b! 我想使用awk脚本将它们转换为整数值,然后进行进一步的操作。我找到了一种将ASCII转换为整数的方法: for(n=0;n<256;n++)chr[n]=sprintf("%c",n) 如果我使用这样的测试文件(不包含上述代码),我可以让它工作: 以及守则: cat testfile.txt | awk 'BEGIN {FS=""} {for (i=1;i<=NF;i++) ar[

我想用ASCII符号编码的值对文件进行一些操作

我有一个测试文件,看起来像这样:

a>
b!
我想使用awk脚本将它们转换为整数值,然后进行进一步的操作。我找到了一种将ASCII转换为整数的方法:

for(n=0;n<256;n++)chr[n]=sprintf("%c",n)
如果我使用这样的测试文件(不包含上述代码),我可以让它工作:

以及守则:

cat testfile.txt | awk 'BEGIN {FS=""} {for (i=1;i<=NF;i++) ar[i]=ar[i]+$i} 
END {for(y=1;y<=length(ar);y++) print ar[y]}'
是否有人对如何将ASCII转换为整数,然后将其传递给awk语句的其余部分提出了建议?

您可以尝试:

awk 'BEGIN {
    FS=""
    for(n=0;n<256;n++)ord[sprintf("%c",n)]=n
}
{
    for (i=1;i<=NF;i++) ar[i]=ar[i]+ord[$i]
} 

END {
    for(y=1;y<=length(ar);y++) print ar[y]
}' file

是否要将字符a转换为值97,“>”转换为值62?这在awk里很难看。for循环会生成一个查找逆问题的结果。是否可以执行“od-t x1输入文件”,然后使用awk处理结果?我无法理解为什么您得到
10.5和47.5
.5
从何而来?你能给出一个输入示例,包括两种情况(字符和数字等),并附上一个输出文件,最好简单解释一下?@tue:我需要在将值放入数组后进行转换。如果我将a转换为97(例如),那么9和7将分别加载到我的数组中。肯特:你说得对。应该是195和95。我从中复制的程序对它们的输出进行了平均,然后我输入了一个错误。它固定在上面。
cat testfile.txt | awk 'BEGIN {FS=""} {for (i=1;i<=NF;i++) ar[i]=ar[i]+$i} 
END {for(y=1;y<=length(ar);y++) print ar[y]}'
3
3
awk 'BEGIN {
    FS=""
    for(n=0;n<256;n++)ord[sprintf("%c",n)]=n
}
{
    for (i=1;i<=NF;i++) ar[i]=ar[i]+ord[$i]
} 

END {
    for(y=1;y<=length(ar);y++) print ar[y]
}' file
195
95