我知道awk有IGNORECASE使操作不敏感。但我无法弄清楚如何在for循环中使用它。 例如:考虑这个awk脚本:
{
for (i = 1; i <= NF; i++)
counter[$i]++
}
在这里我知道我可以使用tolower,但如果我想用IGNORECASE = 1做什么,那么在计数时它会忽略大小写。
答案 0 :(得分:1)
“通常,您不能使用IGNORECASE使某些规则不区分大小写,而其他规则区分大小写,因为没有直接的方法来为特定规则的模式设置IGNORECASE .17为此,请使用括号表达式或tolower()。但是,你可以用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 Chris