locale及tr命令(补充)
一.locale命令
1.有时候在命令行输入命令后会显示乱码状态,也可能时间会显示乱码,这是因为语系的不同而产生的乱码,这时就需要更改相对应的语系。
2.比如查询日期:
1)中文语系:
[[email protected] ~]# date
2019年 05月 07日 星期二 19:41:54 CST
2)英文语系:
[[email protected] ~]# date
Tue May 7 19:30:20 CST 2019
3.列出现在可用的语系:
[[email protected] ~]# locale
LANG=zh_CN.UTF8
LC_CTYPE="zh_CN.UTF8"
LC_NUMERIC="zh_CN.UTF8"
LC_TIME="zh_CN.UTF8"
LC_COLLATE="zh_CN.UTF8"
LC_MONETARY="zh_CN.UTF8"
LC_MESSAGES="zh_CN.UTF8"
LC_PAPER="zh_CN.UTF8"
LC_NAME="zh_CN.UTF8"
LC_ADDRESS="zh_CN.UTF8"
LC_TELEPHONE="zh_CN.UTF8"
LC_MEASUREMENT="zh_CN.UTF8"
LC_IDENTIFICATION="zh_CN.UTF8"
LC_ALL=
ps:基本上可以逐一设定每个与语系有关的变量数据,但是如果其他变量都未设定,但有设定LANG或者LC_ALL时,其他语系变量就会被这两个变量所取代。
4.centos7系统默认的语系在/etc/locale.conf:
[[email protected] ~]# vim /etc/locale.conf
1 LANG="zh_CN.UTF-8" 只需要在此处更改即可
~
5.仅暂时更改语系可通过设定环境变量实现:
[[email protected] ~]# echo $LANG
zh_CN.UTF8 当前语系
[[email protected] ~]# export LANG=en_US.UTF8 更改语系环境变量
[[email protected] ~]# echo $LANG
en_US.UTF8
[[email protected] ~]# date
Tue May 7 19:49:52 CST 2019
6.也可以在/etc/profile.d/*.sh创建一个开机会自动读取的环境变量;
[[email protected] ~]# cat /etc/profile.d/lang1.sh
#!/bin/bash
declare -x LANG=en_US.UTF8
ps:此时开机也会自动更改语系环境变量
二.tr命令
1.语法及选项
1.tr命令可以对来自标准输入的字符进行替换,压缩和删除。它可以将一组字符变成另一组字符,可用来实现优美的单行命令,功能很强大。
2.语法:tr(选项)(参数)
1)-c或——complerment:取代所有不属于第一字符集的字符
2)-d或——delete:删除所有属于第一字符集的字符
3)-s或–squeeze-repeats:把连续重复的字符以单独一个字符表示
4)-t或–truncate-set1:先删除第一字符集较第二字符集多出的字符
5)字符集1:指定要转换或删除的原字符集。除了执行删除操作,执行其余转换操作时,必须使用字符集2指定转换的目标字符。
6)字符集2:指定要转换成的目标字符集。
2.tr练习
1.将字符由小写转换为小写:
[[email protected] ~]# echo “hello,kasumi” | tr [a-z] [A-Z]
“HELLO,KASUMI”
ps:集合也可以自己制定,比如:‘a-c0-9’,‘a-de-h’,集合里也可以使用\n’、’\t’,也可以使用其他ASCII字符。
2.使用tr删除字符:
[[email protected] ~]# echo “hello 516 kasumi” | tr -d [0-9]
“hello kasumi”
3.将制表符转换为空格:cat test | tr '\t' ' '
4.字符集补集,从文本中将不在范围内的字符删除:
echo "a b y*y kk 1 3 45 ii" | tr -d -c '[0-9] \n'
1 3 45
ps:除了数字及换行符和空格都被删除
5.使用tr压缩字符,可压缩输入中重复的字符:
[[email protected] ~]# echo "ksuuuuuuuuuumi yukkkki" | tr -s 'uk'
ksumi yuki
6.-t选项替换字符:
[[email protected] ~]# echo "ksuuuuuuuuuumi yukkkki" | tr -s 'uk'
ksumi yuki
7.利用tr做数字运算:
[[email protected] ~]# echo "1 2 3 4 5 6" | xargs -n1 | echo $[ $(tr '\n' '+')+0]
21