请注意,我需要 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 从字符串中删除所有小写字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18113684/