[英]simple awk string comparison unexpected result
在一般的字符串比較中,“ A”>“ a”為假。
但是,我從此awk執行中得到了意外的結果:
$ echo "A a"| awk '{if ($1 > $2) print "gt"; else print "leq"}'
gt
我想念什么?
環境信息:
$ uname -r -s -v -M
AIX 1 6 IBM,9110-510
$ locale
LANG=en_AU.8859-15
LC_COLLATE="en_AU.8859-15"
LC_CTYPE="en_AU.8859-15"
LC_MONETARY="en_AU.8859-15"
LC_NUMERIC="en_AU.8859-15"
LC_TIME="en_AU.8859-15"
LC_MESSAGES="en_AU.8859-15"
LC_ALL=
診斷:
$ echo "A a"| awk '{print NF}'
2
更新在設置LC_ALL = POSIX(感謝JS웃)之后,它將產生正確的結果。 需要對此進行進一步調查。
我無法重現此錯誤,但是您可以通過將操作數與空字符串連接來強制進行字符串比較:
echo "A a"| awk '{if ($1"" > $2"") print "gt"; else print "leq"}'
注意: 與任何一個操作數串聯都足夠。
由於懷疑OP的locale
設置導致了此問題。 設置LC_ALL=POSIX
此問題已解決。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.