shell的tr命令
tr,translate的简写,即翻译的意思。主要用来从标准输入中通过替换或删除操作进行字符转换。只接受标准输入,不接受文件参数。
命令语法:
tr [–c/d/s/t] [SET1] [SET2]
参数解释:
SET1/SET2: 字符集
-c: complement,用SET2替换SET1中没有包含的字符
-d: delete,删除SET1中所有的字符,不转换
-s: squeeze-repeats,压缩SET1中重复的字符,即删除重复的字符
-t: truncate-set1,将SET1用SET2替换,一般缺省为-t
-c:complement,用SET2替换SET1中没有包含的字符
栗子:
1. 压缩重复字符
只是把字符串中连续出现的字符压缩,并不是把相同的字符都去掉
echo deeelaaave | tr -s [a-z]
结果为:
delave
2. 删除换行符 \n
# tr.txt Learning Linux It's so simple
1)删除多余换行符,即中间的那些空白
只是输出改变了而已,tr.txt 文件的内容还是原来一样。
cat tr.txt | tr -s "\n"
结果为:
Learning Linux It's so simple
2)删除所有换行符
cat tr.txt | tr -d "\n"
结果为:
Learning LinuxIt's so simple
3. 大小写转换
echo "MY NAME IS DELAV" | tr -t [A-Z] [a-z]
结果为:
my name is delav
当然也可以小写转换成大写
4. 删除指定字符
# tr.txt Python 2015.9 - 2018.11 Linux 2016.4 - 2018.11 C 2013.9 - 2014.9 Golang 2018.11 -
[0-9]表示所有数字,[.] [\-] [ ] 分别表示 [点 横杠 空格 ] 三个字符,横杠需要添加转义符
cat tr.txt | tr -d "[0-9][.][\-][ ]"
结果为
Python
Linux
C
Golang
5. 字符补集替换
-c:用换行符替换掉除了字母外的所有字符;-s:删除多余的换行符
cat tr.txt | tr -cs "[a-z][A-Z]" "\n"
结果为:
Python
Linux
C
Golang