shell tr 命令是shell中的一个外部命令,不是shell内置命名。 tr命令的作用就是修改字符串。 可以进行删除和替换的操作。删除可以是指定的字符集合,或是重复的字符。tr命令接收的是从标准输入提供的字符串, 所以一般的用法都是 ** echo "some string ..." | tr [a-z] [A-Z] ** 这样的用法。这里示例是把小写字符转变成大写的。
tr命令的格式
tr [OPTION]... SET1 [SET2]
tr命令的参数
参数 | 含义 |
---|---|
-d | 删除存在 set1 中,且不存在set2中的字符,如果set2不存在就删除set1中的字符 |
-c (complerment) | 补集, 通常和 -d一块使用, 表示仅仅保留存在 set1 中的字符 |
-s | 连续多个重复的字符串,仅仅保留一个, 存在set2,仅仅返回存在set2的字符,组成的结果 |
-t (truncate) | 缩短第一个集合, 保证第一个集合的长度不大于第二个集合的长度 |
tr命令的示例
# 把abc替换成对应的 efg
echo "abc" | tr "abc" "efg"
# 输出 12333, 默认如果第一个集合比第二个集合长,则用第二个集合中的最后一个字符,去对应第一个集合中的字符。
echo "abcef" | tr "abcef" "123"
# 如果想输出结果是 123ef 可以使用参数 -t
echo "abcef" | tr -t "abcef" "123"
# 删除字符 所有的字符 a ,输出的是 bbbccc
echo "aabbbccc" | tr -d 'a'
# 第一字符集(abc)中,所有连续重复的字符保留一个。 输出 abca
echo "aabbbcccaaa" | tr -s 'abc'
# 输出a
echo "aabbbcccaaa" | tr -s 'abc' 'a'
# 删除补集,意思就是。 保留集合1中的字符
了解更多
字符范围 可以用 [a-z]这样的格式表示 a到z的所有字符。[0-9]所有的数字
转义字符
符号 | 表示 | 含义 |
---|---|---|
\a | ctrl+G | 响铃 |
\b | ctrl+H | 退格 |
\f | ctlr+L | 走行换页 |
\n | ctrl+J | 换行 |
\r | ctlr+M | 回车 |
\t | ctrl+I | 水平制表 |
\v | ctrl+X | 垂直制表 |
字符集合
集合 | 含义 |
---|---|
[:alnum:] | 所有的字母和数字 |
[:alpha:] | 所有的字母 |
[:blank:] | 水平空格 |
[:cntrl:] | 控制字符 |
[:digit:] | 数字 |
[:graph:] | 不包含空格的可打印字符 |
[:lower:] | 小写字符 |
[:upper:] | 大写字符 |
[:print:] | 可以打印字符,包含空格 |
[:punct:] | 标点符号 |
[:space:] | 水平和和垂直的空白字符 |
[:xdigit:] | [a-zA-Z0-9] |
[=CHAR=] | 自定义的字符 |
shell tr 更多用法
echo "abc" | tr [:lower:] [:upper:]
#删除换行
echo -e "abc\n123" | tr -d "\n"
echo -e "abc\n123" | tr -d '\n'
# windows 文件在ftp到可linxu服务器可以删除 \r, 删除的是vim中的 ^M
cat win.txt | tr -d "\r"
# 求和
echo {1..100} | xargs -n1 | echo $(tr '\n' '+')0 | bc