Shell 命令之大小写转换

转换大小写

bash 4.0 之后适用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 设置变量
$ test="abcDEF"

# 把变量中的第一个字符换成大写
$ echo ${test^}
AbcDEF

# 把变量全部替换为大写
$ echo ${test^^}
ABCDEF

# 把变量中的第一个字符换成小写
$ echo ${test,}
abcDEF

# 把变量全部替换为小写
$ echo ${test,,}
abcdef

POSIX

  1. tr:将字符进行替换

    1
    2
    3
    4
    5
    6
    7
    # 设置变量
    $ test="abcDEF"

    $ echo "$test" | tr '[:upper:]' '[:lower:]'
    abcdef
    $ echo "$test" | tr 'A-Z' 'a-z'
    abcdef
  2. awk:是一种编程语言,用于在 linux/unix 下对文本和数据进行处理。数据可以来自标准输入(stdin)、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是 linux/unix 下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。awk 有很多内建的功能,比如数组、函数等,这是它和C语言的相同之处,灵活性是其最大的优势。

1
2
$ echo "$test" | awk '{print tolower($0)}'
abcdef

注1:tr可以使用的字符类

[:alnum:]:字母和数字
[:alpha:]:字母
[:cntrl:]:控制(非打印)字符
[:digit:]:数字
[:graph:]:图形字符
[:lower:]:小写字母
[:print:]:可打印字符
[:punct:]:标点符号
[:space:]:空白字符
[:upper:]:大写字母
[:xdigit:]:十六进制字符