shell字符大小写转换

2014-11-06

Shell 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

分类:操作系统 | 标签: |

相关日志

评论被关闭!