Linux tr转换或删除文件中的字符

tr 指令从标准输入设备读取数据,经过字符串转译后,将结果输出到标准输出设备。

tr命令

百度百科
用来从标准输入中通过替换或删除操作进行字符转换

[root@master ~]# tr --help
用法:tr [选项]... SET1 [SET2]
从标准输入中替换、缩减和/或删除字符,并将结果写到标准输出。

  -c, -C, --complement          反选设定字符。也就是符合 SET1 的部份不做处理,不符合的剩余部份才进行转换
  -d, --delete                  删除匹配 SET1 的内容,并不作替换
  -s, --squeeze-repeats 		如果匹配于 SET1 的字符在输入序列中存在连续的(缩减连续重复的字符成指定的单个字符)
                                重复,在替换时会被统一缩为一个字符的长度
  -t, --truncate-set1           削减 SET1 指定范围,使之与 SET2 设定长度相等
      --help            		显示此帮助信息并退出
      --version         		显示版本信息并退出

SET(字符集) 是一组字符串,一般都可按照字面含义理解。解析序列如下:
  \NNN  		八进制值为NNN 的字符(1 至3 个数位)
  \\            反斜杠
  \a            终端鸣响
  \b            退格
  \f            换页
  \n            换行
  \r            回车
  \t            水平制表符
  \v            垂直制表符
  字符1-字符2    从字符1 到字符2 的升序递增过程中经历的所有字符
  [字符*]       在SET2 中适用,指定字符会被连续复制直到吻合设置1 的长度
  [字符*次数]    对字符执行指定次数的复制,若次数以 0 开头则被视为八进制数
  [:alnum:]     所有的字母和数字
  [:alpha:]     所有的字母
  [:blank:]     所有呈水平排列的空白字符
  [:cntrl:]     所有的控制字符
  [:digit:]     所有的数字
  [:graph:]     所有的可打印字符,不包括空格
  [:lower:]     所有的小写字母
  [:print:]     所有的可打印字符,包括空格
  [:punct:]     所有的标点字符
  [:space:]     所有呈水平或垂直排列的空白字符
  [:upper:]     所有的大写字母
  [:xdigit:]    所有的十六进制数
  [=字符=]      所有和指定字符相等的字符

仅在SET1 和SET2 都给出,同时没有-d 选项的时候才会进行替换。
仅在替换时才可能用到-t 选项。如果需要SET2 将被通过在末尾添加原来的末字符的方式
补充到同SET1 等长。SET2 中多余的字符将被省略。只有[:lower:][:upper:]
以升序展开字符;在用于替换时的SET2 中以成对表示大小写转换。-s 作用于SET1,既不
替换也不删除,否则在替换或展开后使用SET2 缩减。

字符范围

指定字符串1字符串2的内容时,只能使用单字符或字符串范围或列表。

[a-z] 	a-z内的字符组成的字符串。
[A-Z] 	A-Z内的字符组成的字符串。
[0-9] 	数字串。
\octal 	一个三位的八进制数,对应有效的ASCII字符。
[O*n] 	表示字符O重复出现指定次数n。因此[O*2]匹配OO的字符串。

tr中特定控制字符的不同表达方式

速记符含义八进制方式

\a Ctrl-G  铃声\007
\b Ctrl-H  退格符\010
\f Ctrl-L  走行换页\014
\n Ctrl-J  新行\012
\r Ctrl-M  回车\015
\t Ctrl-I  tab键\011
\v Ctrl-X  \030

参考实例

[root@localhost ~]# echo "aaa bbb" | tr -s "a"
a bbb

将文件file中出现的"abc"替换为"xyz"
[root@Gin scripts]# cat t.txt |tr "abc" "xyz"
[root@Gin scripts]# cat t.txt
abc

After the sea hone, smooth pebble beautiful.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星光落入你灰蒙蒙的眼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值