极客进化岛
技术自由路

【shell】shell脚本肿的文本替换工具-tr

tr命令介绍

tr是一个超级好用的工具,他经常可以用来编写单行命令,对来自标准输入的内容进行字符的替换,字符的删除,以及重复字符的压缩。 也可以将一组字符变成另外一组字符。

标准输入 stdin

常见参数

[root@rhce test]# tr --help
用法:tr [选项]... SET1 [SET2]
Translate, squeeze, and/or delete characters from standard input,
writing to standard output.

  -c, -C, --complement    use the complement of SET1
  -d, --delete            delete characters in SET1, do not translate
  -s, --squeeze-repeats   replace each sequence of a repeated character
                            that is listed in the last specified SET,
                            with a single occurrence of that character
  -t, --truncate-set1     first truncate SET1 to length of SET2
      --help        显示此帮助信息并退出
      --version     显示版本信息并退出

SET 是一组字符串,一般都可按照字面含义理解。解析序列如下:

  \NNN  八进制值为NNN 的字符(1 至3 个数位)
  \\        反斜杠
  \a        终端鸣响
  \b        退格
  \f        换页
  \n        换行
  \r        回车
  \t        水平制表符
  \v        垂直制表符
  字符1-字符2   从字符1 到字符2 的升序递增过程中经历的所有字符
  [字符*] 在SET2 中适用,指定字符会被连续复制直到吻合设置1 的长度
  [字符*次数]   对字符执行指定次数的复制,若次数以 0 开头则被视为八进制数
  [:alnum:] 所有的字母和数字
  [:alpha:] 所有的字母
  [:blank:] 所有呈水平排列的空白字符
  [:cntrl:] 所有的控制字符
  [:digit:] 所有的数字
  [:graph:] 所有的可打印字符,不包括空格
  [:lower:] 所有的小写字母
  [:print:] 所有的可打印字符,包括空格
  [:punct:] 所有的标点字符
  [:space:] 所有呈水平或垂直排列的空白字符
  [:upper:] 所有的大写字母
  [:xdigit:]    所有的十六进制数
  [=字符=]    所有和指定字符相等的字符

常用命令展示

1. 将输入的字符小写换成大写
[root@rhce test]# echo "zmgaosh" |tr 'a-z' 'A-Z'
ZMGAOSH

这里的‘a-z’ ‘A-Z’都是集合,除此之外还有‘0-9’

2. 实现对密码加密

加密:

[root@rhce test]# echo 12345 | tr '0-9' 'bcdefghi'    ### 加密
cdefg

解密:

[root@rhce test]# echo 'cdefg' |tr 'bcdefghi' '0-9'
12345
3. 使用tr删除字符
[root@rhce test]# echo 'zmgaosh09 is me123' |tr -d '0-9'
zmgaosh is me
[root@rhce test]# 
4. 删除多余的空行
[root@rhce test]# cat a.txt   ## 测试文件,有空行
a
bc

cd

删除空行:

[root@rhce test]# cat a.txt |tr -s '\n'
a
bc
cd

注意: 这里只是对输出的文本删除了空行,源文件内容并没有修改

5. 将小写变成大写
[root@rhce test]# echo 'hello*' |tr [:lower:] [:upper:]
HELLO*

总结

tr命令也是比较常用的命令之一,在shell脚本中,等待用户输入Y,如果用户输入的是小写y,可以先转换成大写的Y在做比较。或者在密码文件中定好格式,当用户输入密码的时候转换成对应的格式,做对比。

shell脚本的熟练程度,取决于对系统是否熟悉。

赞(1)
未经允许不得转载:极客进化岛 » 【shell】shell脚本肿的文本替换工具-tr