QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 935|回复: 3

是awk高手的请进。

[复制链接]
发表于 2005-2-17 03:44:14 | 显示全部楼层 |阅读模式
awk '# lower - change upper case to lower case
# initialize strings
BEGIN { upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
        lower = "abcdefghijklmnopqrstuvwxyz"
}
                                                                                
# for each input line
{
# see if there is a match for all caps
        while (match($0, /[ABCDEFGHIJKLMNOPQRSTUVWXYZ]+/))
        #while (match($0, /[A-Z]+/))
        # get each cap letter
        for (x = RSTART; x < RSTART+RLENGTH; ++x) {
                CAP = substr($0, x, 1)
                CHAR = index(upper, CAP)
                # substitute lowercase for upper
                gsub(CAP, substr(lower, CHAR, 1))
        }
# print record
        print $0
}' $*
上面这段awk脚本,目的是将文件中的大写字母转换为小写字母。我用了才发现在awk中/[A-Z]/匹配的不仅是大写而且还有小写(如果使用第二个while将得不到正确的结果)。
请问谁能够帮我解决awk中/[A-Z]/的匹配问题。
发表于 2005-2-18 13:51:47 | 显示全部楼层
有这等事?

使用 LANG=C 来运行 awk。

或者使用[[:upper:]] 来代替[A-Z]。
回复

使用道具 举报

发表于 2005-2-24 00:36:11 | 显示全部楼层
[code:1]
awk '{print tolower($0)}'[/code:1]
这样可以么
回复

使用道具 举报

发表于 2005-10-11 15:20:20 | 显示全部楼层
可以
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-2 16:25 , Processed in 0.192172 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表