這個人花了我一晚的睡眠。防止awk將字符串從0開始轉換爲oct0
假設你有一個文件a_file.txt如下。
1000 JUC_0000 1
2494 JUC_AAAA 2
2495 JUC_BBBB1 3
2495 JUC_BBBB2 4
4676 JUC_CCCC 5
4677 JUC_DDDD1 6
4677 JUC_DDDD2 7
如果運行
awk '{if($1==4677){print $0;}}' a_file.txt
你得到你所期望的:
4677 JUC_DDDD1 6
4677 JUC_DDDD2 7
但是,如果你運行
awk '{if($1==04677){print $0;}}' a_file.txt
你可能是(我是)驚喜地得到
2495 JUC_BBBB1 3
2495 JUC_BBBB2 4
看來發生的事情是,awk將04677解釋爲2495的八進制表示形式,並與它一起運行。
兩個問題:
- 是我的結果的理解是否正確?
- 有沒有一種方法可以防止awk將以0開頭的數字解釋爲八進制數字,並使用它們的小數解釋代替?
- gawk是否有相同的行爲,是否可以改變它? 開始帶前導零
'我對結果的解釋是否正確?'是的,您的解釋是正確的 –
'(2)'只有我能想到'$ 1 == int(「04677」)'...... –
' gawk有同樣的行爲嗎?是的......'是否有可能改變它?'不知道 –