shell tr 命令使用总结

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

发表评论

邮箱地址不会被公开。