SHELL 中英文字母大小写转换
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SHELL 中英文字母大小写转换相关的知识,希望对你有一定的参考价值。
参考技术A 大小写转换是一个常用功能,每种语言通常都提供了支持,那么在shell中怎么进行大小写转换呢?tr可以非常容易地实现 sed 的许多基本功能。它可以用一个字符来替换另一个字符,或者可以完全除去一些字符。
其命令格式为:
tr [option] ["string1"] ["string2"] < file
没有任何选项的时候,tr默认为替换操作,就是将string1在文件中出现的字符替换为string2中的字符,这里要注意的是替换关系。
-c选项,用string1中字符的补集替换string1,这里的字符集为ASCII。
-d选项,删除文件中所有在string1中出现的字符。
-s选项,删除文件中重复并且在string1中出现的字符,只保留一个。
-c 选项这里需要解释一下,我们来看一个例子:
指定string或string2的内容时,只能使用单字符或字符串范围或列表。
举几个栗子:
最后一种情况需要注意,当string2范围比string1小的时候,会出现这种意料之外的情况。
下面这种使用 -s 去重。
想要去除空行可以使用 tr -s "\n" < inputfile 这样有单独的"\n"就会被删除。
使用 -d 可以删除出现的字符:
shell将字符串转换将小写字母转换为大写字母
需求:将数据库中的所有表名转换成大写
方法一:typeset
for i in `mysql -uusername -p'password' -h 192.168.0.145 test -e "show tables" | sed '1d'` ;do typeset -u i && echo $i ;done
命令实例:
test="dafoJg"
typeset -u test
echo $test
问题:
使用typeset命令第一次转换的时候,还是原字符串
方法二:tr
###推荐用 tr 替换的方法
##upper表示大写,lower表示小写
for i in `mysql -uusername -p'password' -h 192.168.0.145 test -e "show tables" | sed '1d'` ;do echo "$i" | tr "[:lower:]" "[:upper:]" ;done
或者
for i in `mysql -uusername -p'password' -h 192.168.0.145 test -e "show tables" | sed '1d'` ;do echo "$i" | tr [a-z] [A-Z] ;done
命令实例:
echo "AedBcC" | tr "[:lower:]" "[:upper:]" 或者 echo "AedBcC" | tr [a-z] [A-Z] #小写转换成大写
echo "AABBCC" | tr "[:upper:]" "[:lower:]" 或者 echo "AABBCC" | tr [A-Z] [a-z] #大写转换成小写
以上是关于SHELL 中英文字母大小写转换的主要内容,如果未能解决你的问题,请参考以下文章