美文网首页
Shell 脚本大小写转换

Shell 脚本大小写转换

作者: 家中古词 | 来源:发表于2018-12-11 11:04 被阅读29次

    tr

    tr 命令专门用来转换(或者删除)一些字符。例如 echo class | tr abc 012 得到 2l0ss。所以 echo $STR | tr ABCDEF abcdef 就可以实现大写转小写。

    但是每次打全 26 个字母显得很愚蠢。tr 也支持一些常用的字符集合定义,例如用 [:upper:] 表示全部大写字母,用 [:lower:] 表示全部小写字母。而且这两个集合中的字符是有序的,即可以一一对应起来。

    所以我们的方案是:

    echo $STR | tr '[:upper:]' '[:lower:]'
    

    其次,它也支持段描述形式的字符定义,就像这样使用:

    echo $STR | tr '[A-Z]' '[a-z]'
    

    调用脚本语言

    调用更强脚本语言的解释器很显然也可以完成这样的任务。以下是几个举例:

    echo $STR | python3 -c 'print(str.lower(input()))'
    echo $STR | ruby -p -e '$_.tr! "A-Z", "a-z"'
    echo $STR | awk '{ print tolower($0) }'
    echo $STR | perl -ne 'print lc'
    

    这些方案的完成程度不同。例如说 Python 的 input() 只读取一行,ruby 的方案 -p 选项其实是假设后面的语句在 while gets ... end 循环里执行。具体还要参考语言本身的定义。

    Bash 4.0

    4.0 添加了一个新特性,使用 ${STR,,} 取得全小写;${STR^^} 取得全大写。这应该是打字最少的方法了。

    echo ${STR,,}
    echo ${STR^^}
    

    相关文章

      网友评论

          本文标题:Shell 脚本大小写转换

          本文链接:https://www.haomeiwen.com/subject/ithshqtx.html