[英]awk IGNORECASE in for loop
我知道awk具有IGNORECASE來使操作不區分大小寫。 但是我不知道如何在for循環中使用它。 例如:考慮以下awk腳本:
{
for (i = 1; i <= NF; i++)
counter[$i]++
}
在這里,我知道我可以使用tolower,但是如果我想使用IGNORECASE = 1來執行該操作,那么在計數時它會忽略大小寫。
降低似乎是要走的路。 在這里查看更多信息:
“總的來說,您不能使用IGNORECASE來使某些規則不區分大小寫,而其他規則則要區分大小寫,因為沒有直接的方法僅為特定規則的模式設置IGNORECASE。17為此,請使用方括號表達式或但是,您只能使用IGNORECASE來做的一件事就是立即動態打開或關閉所有規則的區分大小寫。”
來自:GNU Awk用戶指南
編輯:
您應該考慮對問題進行更好的說明。 嘗試這個:
#Input: hello Hello HELLO World
#Output: hello 3 World 1
{for (i=1;i<=NF;i++){
a=tolower($i)
count[a]=$i","count[a]
}
}
END{for (i in count){
split(count[i],res,",")
l=length(res) - 1
if (l==1){
print res[1],1
} else {
print tolower(res[1]),l}
}
}
克里斯·HTH
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.