[求助14.04,GNU awk中4.0.1]AWK数值变量当作字符串
我有一种奇怪的问题...我分配数字值,即从输入文件中检索,以自定义变量。当我打印它时,它显示正确,打印它的长度显示正确的位数。
但是,当我在一个循环中使用变量时,当索引变得大于我的变量的最高有效位时,我的循环停止。
我试过一个For循环,现在是一个While循环,都遭受同样的问题。
对于我正在处理的文件,samples
包含值8092,循环在第9次迭代时停止。
#!/usr/bin/awk -f
BEGIN {
samples = 0;
}
{
...
samples = $24;
}
END {
i = 1;
while (i <= samples) {
if (i>samples) { print "This is the end.\n " i " is bigger than " samples;}
i++;
}
}
我对AWK很新,也看不出为什么会发生这种情况。阅读了大量教程后,我的印象是AWK能够根据需要在字符串&之间进行数字表示。
有人能帮我看看我做错了什么吗?
解 答案是,作为JNevill & ghoti建议,添加0到可变。就我而言,最好的地方就在循环之前,因为样本在AWK脚本的主体中被重写。谢谢。
变量'sample'是否可能包含回车符?如果输入文件是在Windows上创建的,并且$ 24是该行中的最后一个字段,则可能会发生这种情况。当然,在这种情况下,长度(样本)将是5而不是4,所以你应该注意到,如果这是你如何显示长度。 – rici
或编辑您的问题,以包括再现问题(不是8092行!)的最小数据集以及来自该输入的预期输出。祝你好运。 – shellter