前言
从标准输入中替换、缩减和/或删除字符,并将结果写到标准输出。
1. 命令格式
2. 命令参数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| 从标准输入中替换、缩减和/或删除字符,并将结果写到标准输出。 -c, -C, --complement 首先补足SET1 -d, --delete 删除匹配SET1 的内容,并不作替换 -s, --squeeze-repeats 如果匹配于SET1 的字符在输入序列中存在连续的重复,在替换时会被统一缩为一个字 符的长度 -t, --truncate-set1 先将SET1 的长度截为和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:] 所有的十六进制数 [=字符=] 所有和指定字符相等的字符
仅在SET1 和SET2 都给出,同时没有-d 选项的时候才会进行替换。 仅在替换时才可能用到-t 选项。如果需要SET2 将被通过在末尾添加原来的末字符的方式 补充到同SET1 等长。SET2 中多余的字符将被省略。只有[:lower:] 和[:upper:] 以升序展开字符;在用于替换时的SET2 中以成对表示大小写转换。-s 作用于SET1,既不 替换也不删除,否则在替换或展开后使用SET2 缩减。
|
3.范例
#tr:去除字母
1
| cat file | tr -d "a-zA-Z">new_file
|
#不换行显示
#删除多余的空行
1
| cat last.txt | tr -s '\n'
|
#删除指定的字符
1
| cat last.txt | tr -d '[0-9].'
|
#字符串去重复
1
| cat last.txt | tr -s '[a-zA-Z]'
|
#不满足第一列的时候用第二列替代
1
| cat last.txt | tr -c '[a-z][0-9]' '+'
|
#大写字母转小写
1 2
| [root@localhost zhangy]# echo "TANK" |tr A-Z a-z tank
|
#小写字线转大写
1 2
| [root@localhost zhangy]# echo 'tank zhang' | tr a-z A-Z TANK ZHANG
|
#替换字母权限为数字
1 2 3 4
| tr rwx- 4321 ll h.txt | tr rwx- 4321 ll /etc/hosts | tr rwx- 4210| awk -F "" '{print $1+$2+$3 $4+$5+$6 $7+$8+$9}' ll /etc/hosts | cut -c 2-10 | tr rwx- 4210 |awk -F "" '{print $1+$2+$3 $4+$5+$6 $7+$8+$9}'
|
#字母c替换字母a
1 2 3 4 5 6 7 8 9
| [root@localhost zhangy]# cat aaa.txt #原文件 aaa
bbb
[root@localhost zhangy]# cat aaa.txt|tr 'a' 'c' #字母c替换字母a ccc
bbb
|
#删除所有字母a
1 2 3 4 5 6 7 8
| [root@localhost zhangy]# cat aaa.txt #原文件 aaa
bbb [root@localhost zhangy]# cat aaa.txt|tr -d 'a' #删除所有字母a
bbb
|
#删除文件file中出现的换行’\n’、制表’\t’字符
1 2 3 4 5 6
| [root@localhost zhangy]# cat aaa.txt #原文件 aaa
bbb [root@localhost zhangy]# cat aaa.txt|tr -d '\n\t' 删除文件file中出现的换行'\n'、制表'\t'字符 aaabbb
|
#删除重复的字母
1 2 3 4 5 6 7 8
| [root@localhost zhangy]# cat aaa.txt #原文件 aaa
bbb [root@localhost zhangy]# cat aaa.txt|tr -s [a-zA-Z] #删除重复的字母 a
b
|
#删除空行
1 2 3 4 5 6 7
| [root@localhost zhangy]# cat aaa.txt #原文件 aaa
bbb [root@localhost zhangy]# cat aaa.txt|tr -s '\n' #删除空行 aaa bbb
|
#用空格符\040替换制表符\011
1 2 3 4 5 6 7 8
| [root@localhost zhangy]# cat aaa.txt #原文件 aaa
bbb [root@localhost zhangy]# cat aaa.txt |tr -s '\011' '\040' aaa
bbb
|
#将test文件中的a变成c
#空格替换成换行符
1 2 3 4 5 6 7 8 9 10
| # cat aaa 656122 asdfasd asdfasd asdfasd asdfas
# cat aaa | tr ' ' '\n' 656122 asdfasd asdfasd asdfasd asdfas
|
引用:
https://www.cnblogs.com/ftl1012/p/9251052.html
http://linux.51yip.com/search/tr