在awk中使用gensub我發現我的大寫字母Z.沒有得到reckognised使用下列AWK行:AWK不使用正則表達式[0-Z]不能捕捉到z範圍
awk '{name=gensub(/[0-z]/,"succes","g",$0); print name}' range2.txt
上的文件「range2.txt 「有以下文字:
A
B
Z
在Z上它只是返回Z而不是」succes「。如果不匹配,它將返回目標。但爲什麼它是無與倫比的?這讓我陷入循環,因爲我把我的問題與其他問題混淆了。我有一個解決方案來完成這項工作,但我仍然對此感到好奇。我嘗試了alfabet和數字的所有其他字母,這些字母都返回成功,但首字母大寫爲。但是,該字母或多或少處於該範圍的中間。
語言環境charmap返回了ISO-8859-15,其中Z在0-z範圍的中間。
我把這個問題歸結到我剛剛寫下來的內容,但沒有看到更多的開頭。我也使用了其他的AWK字符串函數,他們都沒有找到Z.即SPLIT MATCH GSUB。
我曾嘗試只是手動添加Z和然後它工作:
AWK「{名稱= gensub(/ [0-ZZ]/「更迭」, 「G」,$ 0);打印名}」 range2.txt
但仍...
無法重現,它的工作對我來說...什麼環境,你在想什麼?你確定在任何地方都沒有任何奇怪的隱形角色/代碼就像你粘貼的一樣嗎? – Robin
我在Linux 2.6.32上運行它,它爲我返回3個連續數,你的語言環境是什麼? mb你會嘗試像這樣做 awk'{name = gensub(/ [0-9a-zA-Z] /,「succes」,「g」,$ 0);打印名稱}'1.txt –
我在redhat上:「紅帽企業Linux客戶端版本5.4(Tikanga)」(Linux 2.6.18-164.el5 x86_64)我的區域設置爲ISO-8859-15,但首都AZ會被分組在一起,我的範圍從0號降到了更低的z,它應該把所有的資本包起來。我知道解決方法,但我只是好奇爲什麼。我們離它近一步,因爲它不能被複制,因此似乎是一個設置或發行版問題。至於怪異的字符,沒有。嘗試在不同的文件。 –