shell字符大小写转换
2014-11-06Shell Scripts字符大小写转化,根据实际情况的不同要求,可以选择用sed,awk,tr实现。
1、sed
小写变大写
# echo abc | sed 's/.*/\U&/g'
ABC
大写变小写
# echo ABC | sed 's/.*/\L&/g'
abc
或者
# echo ABC | sed 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghigklmnopqrstuvwxyz/'
#sed分段处理,第一个字符不变,后面两个变为小写,注意要使用-r,扩展正则表达式
$ echo ABC | sed -r 's/([A-Z])([A-Z][A-Z])/\1\L\2/g'
2、在处理整列问题的时候,awk显然有优势
# toupper函数&tolower函数
$ cat /etc/passwd |awk -F: '{$1=toupper($1);print $1}'
$ echo ABC | awk '{$1=tolower($1);print $1}'
3、有时候tr也是不错的选择
# 把last输出的小写字符变成大写字符
$ last | tr [:lower:] [:upper:]
$ last | tr '[a-z]' '[A-Z]'
4、将所有用户名转换大写并存为user.txt实例:
cat /etc/passwd|awk -F: '{print $1" "$3}'|sed 's/.*/\U&/g' > user.txt
或者
cat /etc/passwd |awk -F: '{$1=toupper($1);print $1" "$3}' > user.txt
或者
cat /etc/passwd |awk -F: '{print $1" "$3}'|tr [:lower:] [:upper:] > user.txt