分享交流
合作共赢!

Linux常用基础命令使用总结【十】——tr

一、简介

1.主要作用

Linux tr 命令用于转换或删除文件中的字符。

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

2.语法

tr [-cdst][--help][--version][第一字符集][第二字符集]  
tr [OPTION]…SET1[SET2]

3.常用参数

  • -c, –complement:反选设定字符。也就是符合 SET1 的部份不做处理,不符合的剩余部份才进行转换
  • -d, –delete:删除指令字符
  • -s, –squeeze-repeats:缩减连续重复的字符成指定的单个字符
  • -t, –truncate-set1:削减 SET1 指定范围,使之与 SET2 设定长度相等
  • –help:显示程序用法信息
  • –version:显示程序本身的版本信息

4.字符集合的范围:

  • \NNN 八进制值的字符 NNN (1 to 3 为八进制值的字符)
  • \\ 反斜杠
  • \a Ctrl-G 铃声
  • \b Ctrl-H 退格符
  • \f Ctrl-L 走行换页
  • \n Ctrl-J 新行
  • \r Ctrl-M 回车
  • \t Ctrl-I tab键
  • \v Ctrl-X 水平制表符
  • CHAR1-CHAR2 :字符范围从 CHAR1 到 CHAR2 的指定,范围的指定以 ASCII 码的次序为基础,只能由小到大,不能由大到小。
  • [CHAR*] :这是 SET2 专用的设定,功能是重复指定的字符到与 SET1 相同长度为止
  • [CHAR*REPEAT] :这也是 SET2 专用的设定,功能是重复指定的字符到设定的 REPEAT 次数为止(REPEAT 的数字采 8 进位制计算,以 0 为开始)
  • [:alnum:] :所有字母字符与数字
  • [:alpha:] :所有字母字符
  • [:blank:] :所有水平空格
  • [:cntrl:] :所有控制字符
  • [:digit:] :所有数字
  • [:graph:] :所有可打印的字符(不包含空格符)
  • [:lower:] :所有小写字母
  • [:print:] :所有可打印的字符(包含空格符)
  • [:punct:] :所有标点字符
  • [:space:] :所有水平与垂直空格符
  • [:upper:] :所有大写字母
  • [:xdigit:] :所有 16 进位制的数字
  • [=CHAR=] :所有符合指定的字符(等号里的 CHAR,代表你可自订的字符)

二、示例

1.将文件testfile中的小写字母全部转换成大写字母,此时,可使用如下命令:

cat testfile |tr a-z A-Z 

2.将文件file中出现的”abc”替换为”xyz”

# cat file | tr "abc" "xyz" > new_file
【注意】这里,凡是在file中出现的”a”字母,都替换成”x”字母,”b”字母替换为”y”字母,”c”字母替换为”z”字母。而不是将字符串”abc”替换为字符串”xyz”。
3.删除文件file中出现的”Snail”字符

# cat file | tr -d "Snail" > new_file
【注意】这里,凡是在file文件中出现的’S’,’n’,’a’,’i’,’l’字符都会被删除!而不是紧紧删除出现的”Snail”字符串。
4.删除文件file中出现的换行’\n’、制表’\t’字符

# cat file | tr -d "\n\t" > new_file
不可见字符都得用转义字符来表示的,这个都是统一的。
5.把文件中的数字0-9替换为a-j
# cat file | tr [0-9] [a-j] > new_file
6、删除“连续着的”重复字母,只保留第一个
# cat file | tr -s [a-zA-Z] > new_file
7、删除空行
# cat file | tr -s "\n" > new_file
8、删除Windows文件“造成”的’^M’字符
# cat file | tr -d "\r" > new_file
或者
# cat file | tr -s "\r" "\n" > new_file
【注意】这里-s后面是两个参数”\r”和”\n”,用后者替换前者
9、用空格符\040替换制表符\011
# cat file | tr -s "\011" "\040" > new_file
10、把路径变量中的冒号”:”,替换成换行符”\n”
# echo $PATH | tr -s ":" "\n"

11.删除非数字字符,主要用于了解下-c参数的作用

$ echo "2018abcdefdf06zzz01" |tr -d -c '[0-9]' #输出20180601

12.删除文件中的空行

$ echo -e "1\n\n2\n\n\n3" | tr -s '\n' #输出1\n2\n3

如果参数-s替换为-d,就是删除所有换行符,输出结果为123。

13.删除重复字符

$ echo "Hellooo    Javaaa" | tr -s "[ ao]" #输出Hello Java

说明:-s是删除所有重复出现字符序列,只保留第一个。再用下面一个例子加深一下这句话的理解。

$ echo "Heoolloooo oo Pythonnnnn" | tr -s 'on' #删除字符on,输出Heollo o Python

14.删除空格

$ echo "   Hello World  " | tr -d '[ \t]' #删除空格,包括tab键。输出HelloWorld

说明:这里tr命令会删除包括中间的空格,如果只需要删除行首或者尾部的空格,可以使用sed命令。

15.大小写替换,shell编程中可用于忽略大小写的字符串判断场景。

$ echo "Hello World" | tr '[a-z]' '[A-Z]' #小写转大写,输出HELLO WORLD
$ echo "Hello World" | tr '[A-Z]' '[a-z]' #大写转小写,输出hello world
$ echo "Hello World" | tr '[A-Za-z]' '[a-zA-Z]' #大小写互换,输出hELLO wORLD

16.删除数字或字母,在shell编程中可用于判断输入是否为纯数字或字母。

$ echo "hello 123World456" | tr -d '[0-9]' #删除数字,输出hello World
$ echo "hello123World456" | tr -d '[a-zA-Z]' #删除字母,输出123456

17.将多行内容合并为一行。

$ echo -e "1\n2\n3\n4" | tr -d '\n' #输出1234

18.将多个连续空格合并为一个空格,并将空格替换为破折号‘-’。

$ echo "2018       06  01" |tr -s ' ' '-' #输出2018-06-01
赞(0) 打赏
未经允许不得转载:琼杰笔记 » Linux常用基础命令使用总结【十】——tr

评论 抢沙发

评论前必须登录!

 

分享交流,合作共赢!

联系我们加入QQ群

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏