Class 带Sed和字符类的大小写转换

Class 带Sed和字符类的大小写转换,class,replace,sed,character,Class,Replace,Sed,Character,我想把字符串从大写转换成小写。我知道有不同的方法可以解决这个问题,但我想了解为什么这个命令不起作用: echo "aa" | sed 's/'[:upper:]'/'[:lower:]'/g' 使用字符类是错误的吗?在sed中,y命令用于映射字符集: sed 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/' 它需要字符的文字列表,而不是字符类。从小写到大写,您可以使用 echo "aW123bR" | sed -r 's/[

我想把字符串从大写转换成小写。我知道有不同的方法可以解决这个问题,但我想了解为什么这个命令不起作用:

echo "aa" | sed 's/'[:upper:]'/'[:lower:]'/g'

使用字符类是错误的吗?

sed
中,
y
命令用于映射字符集:

sed 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'

它需要字符的文字列表,而不是字符类。

从小写到大写,您可以使用

echo "aW123bR" | sed -r 's/[a-z]+/\U&/g'
tr
命令是一个有趣的选择

echo "aW123bR" | tr '[:lower:]' '[:upper:]'

gawk的另一个可能解决方案:

[ ~]$ echo "HELLO"|awk '{print tolower($0)}'
hello

但是不可能使用[:upper:]或[:lower:]来获得更优雅的解决方案吗?据我所知不可能。
y
命令仅适用于字符,不适用于类。你甚至不能写
y/A-Z/A-Z/