Linux tr命令

本文介绍了Linux命令行工具tr的使用方法,包括如何通过tr命令转换或删除字符,支持正则表达式,提供了多个实用示例,如删除指定字符、转换大小写及替换重复字符等。

tr:translate or delete characters 转换或者删除字符,从标准输入中接受数据,然后将处理过的数据写入标准输出,支持正则表达式。关于正则表达式可以参考博文“正则表达式的初探

命令格式:$tr [-ds] SET1

常用参数与说明更多详细信息可以参考man tr页面

  • -d:删除(delete)字符 后面加上需要删除的字符
  • -s:取代重复的字符,替换字符

例子:

[root@rhel6164 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@rhel6164 ~]# echo $PATH | tr -d / #删除PATH中的slash(/)
usrlocalsbin:usrlocalbin:sbin:bin:usrsbin:usrbin:rootbin
[root@rhel6164 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@rhel6164 ~]# echo $PATH | tr -s ':' '\n' #把冒号转换成换行符
/usr/local/sbin
/usr/local/bin
/sbin
/bin
/usr/sbin
/usr/bin
/root/bin
[root@rhel6164 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@rhel6164 ~]# echo $PATH | tr -s [:lower:] [:upper:] #把小写字母转换成大写字母
/USR/LOCAL/SBIN:/USR/LOCAL/BIN:/SBIN:/BIN:/USR/SBIN:/USR/BIN:/ROT/BIN

取代重复的字符

[root@rhel6164 ~]# echo bbbcc | tr -s b #取代连续的字符b
bcc

取代重复的字符并替换成其他的字符

[root@rhel6164 ~]# echo bbbcc | tr -s b d #取代重复的字符b,并替换成字符d
dcc

### Linux `tr` 命令使用教程 #### 一、基本概念 `tr` 是一种用于转换或删除字符的命令工具,在 Bash 中应用广泛。该命令并不复杂却十分有用,适用于多种场景下的字符处理工作[^3]。 #### 二、基础语法结构 标准形式如下所示: ```shell tr [选项] SET1 [SET2] ``` 其中,`SET1` 表示源字符集合;而当指定了第二个字符集 `SET2` 后,则会将来自输入流里的每一个属于 `SET1` 的成员替换成对应的 `SET2` 成员[^1]。 #### 三、具体功能展示 ##### (一)字符翻译 可以实现大小写字母之间的相互转换: ```shell echo "HELLO WORLD" | tr '[:upper:]' '[:lower:]' ``` 上述指令将会把所有的大写英文字母转变为相应的小写字母版本。 ##### (二)字符删除 通过指定特定的目标字符来移除它们: ```shell echo "this is a test." | tr -d ' ' ``` 这里 `-d` 参数指示 `tr` 移除所有空格字符[^5]。 ##### (三)压缩重复项 利用 `-s` 开关能够有效地去除连续出现多次相同类型的符号: ```shell echo "hello...world!!!" | tr -s '.!' ``` 这条语句的作用在于仅保留每种标点符号的一次实例。 ##### (四)取反操作 借助于 `-c` 标志位可选取给定范围之外的所有其他ASCII码表内的元素作为待处理对象: ```shell echo "abcXYZ123" | tr -cd 'a-z' ``` 此表达式的含义是从原始字符串里筛选并输出全部位于小写字母区间之中的成分[^4]。 需要注意的是,尽管 `tr` 功能强大且易于掌握,但由于其局限性——即只支持单一字符级别的映射关系建立——所以在面对更为精细复杂的文本编辑需求时往往显得力不从心。此时推荐考虑采用像 `sed` 或者 `awk` 这样的高级脚本语言来进行替代作业[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值