簡體   English   中英

awk IGNORECASE在for循環中

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

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