如何在for循环中指定AWK中的大小写不敏感?

时间:2014-03-04 09:53:41

标签: awk

我有一个awk系列:

awk -F'/|//'  '{for(i=1;i<=NF;i++) if($i=="CUST")break;print $(i)}'

我希望CUST不区分大小写,并且我使用的是($i==CUST),因为该文件包含CUSTOMER之类的字词,这些字词不应该匹配。

我尝试使用Character类,如:if($i=="[Cc][Uu][Ss][Tt]"),但会引发错误。

2 个答案:

答案 0 :(得分:2)

当你的正则表达式比较运算符是==并且你的正则表达式字符串应该像~ 时,你的错误是你正在与/^[Cc][Uu][Ss][Tt]$/进行字符串比较(注意锚点{ {1}}和^停止过匹配)

$

更好的方法是使用IGNORECASE变量或tolower, toupper函数。

答案 1 :(得分:2)

使用awk

toupper($i)

tolower($i)

像这样:

awk -F'/|//'  '{for (i=1;i<=NF;i++) if (tolower($i) == "cust")break; print $i}'