"tr"基本介绍
tr命令主要用于删除文件中控制字符或进行字符转换。
tr基本语法
tr命令格式:tr [ -d ] [ -c ] [ -s ] [ 字符串1 ] [ 字符串2 ] 文件名。其中字符串1用于查询,字符串2用于处理各种转换
选项介绍:
-c 用字符串1中字符集的补集替换此字符集,要求字符集为ASCII。
-d 删除字符串1中所有输入字符。
-s 删除所有重复出现字符序列,只保留第一个;即将重复出现字符串压缩为一个字符串。
字符串1和字符串2内容只能使用单字符、字符串范围或列表。比如字符串范围[a-z]表示小写字母、[0-9]表示数字
tr使用实例
- 删除文件中的空行
$ echo -e "1\n\n2\n\n\n3" | tr -s '\n' #输出1\n2\n3
- 删除重复字符
$ echo "Hellooo Javaaa" | tr -s "[ ao]" #输出Hello Java
- 删除空格
$ echo " Hello World " | tr -d '[ \t]' #删除空格,包括tab键。输出HelloWorld
说明:这里tr命令会删除包括中间的空格,如果只需要删除行首或者尾部的空格,可以使用sed命令。
- 大小写替换,shell编程中可用于忽略大小写的字符串判断场景。
$ echo "Hello World" | tr '[a-z]' '[A-Z]' #小写转大写,输出HELLO WORLD
$ echo "Hello World" | tr '[A-Z]' '[a-z]' #大写转小写,输出hello world
$ echo "Hello World" | tr '[A-Za-z]' '[a-zA-Z]' #大小写互换,输出hELLO wORLD
- 删除数字或字母,在shell编程中可用于判断输入是否为纯数字或字母。
$ echo "hello 123World456" | tr -d '[0-9]' #删除数字,输出hello World
$ echo "hello123World456" | tr -d '[a-zA-Z]' #删除字母,输出123456
- 将多行内容合并为一行。
$ echo -e "1\n2\n3\n4" | tr -d '\n' #输出1234
- 将多个连续空格合并为一个空格,并将空格替换为破折号‘-’。
$ echo "2018 06 01" |tr -s ' ' '-' #输出2018-06-01
- 删除非数字字符,主要用于了解下-c参数的作用。
$ echo "2018abcdefdf06zzz01" |tr -d -c '[0-9]' #输出20180601