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

时间:2014-03-11 07:27:37

标签: awk ascii printf

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

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

a>
b!

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

for(n=0;n<256;n++)chr[n]=sprintf("%c",n)

但我不知道如何将此数组中的整数值传递给另一个我想进行数字操作的数组。

示例输出将是:

195
95

如果我使用这样的测试文件(不包含上述代码),我可以使用它:

11
22

和代码:

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

有没有人建议如何将ASCII转换为整数然后将其传递给我的其余awk语句?

1 个答案:

答案 0 :(得分:1)

您可以尝试:

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