簡體   English   中英

簡單的awk字符串比較意外結果

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM