[求助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