Linux tr 命令示例教程

tr 即 translation ,该命令把字符串从一种类型转换为另一种类型。比如,从小写转成大写。

tr命令非常简单,但没有 awksed 命令强大。

语法

tr [options] charset1 [charset2]

命令选项及解释:

  • -d : 删除第一个集合中的字符
  • -c : 第一字符集补集,即非操作
  • -s : 删除第一集合中连续出现的字符
  • -t : truncate the first set

下面通过实例进行解释。

大小写转换

首先我们看实例文件:

~$ cat sample.txt
This is my life
and my file

现在转换文本为大写:

cat sample.txt | tr 'a-z' 'A-Z'
# 输出
THIS IS MY LIFE
AND MY FILE

# 转换小写
cat sample.txt | tr 'A-Z' 'a-z'

字符串替换

上面对字符进行转换,同样也可以替换字符,替换操作是逐个进行:

cat sample.txt | tr ‘ilm’ ‘tyz’
# 输出
Thts ts zy ytfe
and zy ftye

第一个字符集被逐个替换为第二个字符集中的字符。i 用 t 代替,l 用 y 代替, m 用 z 代替。

如果第二个字符集比第一个少,则第二个最后被设置为重复。举例,tr 'ilm' 'ty' ,则 l 和 m 都被替换为 y。

删除字符

如果要删除特定字符,可以使用 -d 选项:

~$ cat sample.txt | tr -d ‘is’
# 输出
Th my lfe
and my fle

上面示例中,所有 i 和 s 都被删除,如果你认为只有 is 被删除,那就理解错了。这就是为什么 sed 命令 处理字符串更好的原因。

删除重复字符

如果文本中有多个空白字符,我们想仅保留一个,可以使用 -s 选项实现:

~$ echo “Text has  too many  spaces” | tr -s ” “
# 输出
Text has too many spaces

也可以使用其他字符代替前面连续出现的字符:

~$ echo “Text has too many spaces” | tr -s ” ” “;# 输出
Text;has;too;many;spaces

这里用; 代替空白字符。

删除所有非数字字符

如果文本中包括数字和文本,我们需要仅保留数字。可以使用 -c 和 -d 选项:

~$ echo “Phone number is 123456789” | tr -cd [:digit:]
# 输出
123456789

即把第一个字符集中的非数字字符删除。

截取搜索模式

我们先看示例,这里i 被1 替换, s,e,f 都被替换为2 :

~$ cat sample.txt | tr ‘isef’ ’12’
# 输出
Th12 12 my l122
and my 21l2

现在加上 选项 -t ,则 is 被替换,而 e f 保持不变。

~$ cat sample.txt | tr -t ‘isef’ ’12’
# 输出
Th12 12 my l1fe
and my f1le

总结

本文介绍 tr 命令,并给了一些示例进行介绍其选项。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值