regex – 如何使用AWK从字符串中删除所有小写字符?

请注意,我在AWK中需要这个答案.

如何从某些awk变量中删除所有小写字符?我试过调用gsub:

gsub(/ [a-z] /,“”,varName);

不幸的是,这删除了整个字符串,好像awk无法区分大小写的区别.我可以使用一些我不知道的正则表达式吗?

编辑:确认,awk没有看到小写和大写字符之间的区别.

示例1(这里将使用字母f来更好地理解结果):

varName="CHRFProtocol";
gsub(/[a-z]/,"f",varName);

结果:ffffffffffff

示例2(同样,这里将使用字母f来更好地理解结果):

varName="CHRFProtocol";
gsub(/[A-Z]/,"f",varName);

结果:ffffffffffff

这合法吗?在做什么?

最佳答案
您的区域设置正在妨碍您.试试这个:

LC_ALL=C awk 'BEGIN { 
varName="CHRFProtocol";
gsub(/[a-z]/,"f",varName);
print(varName); }'

GNU awk尊重语言环境设置,在Linux上的大多数国家语言环境中,正则表达式不区分大小写.在awk命令的持续时间内将语言环境重置为C(= POSIX)可以恢复区分大小写.

转载注明原文:regex – 如何使用AWK从字符串中删除所有小写字符? - 代码日志