首页 > 代码库 > 【Linux】字符转换命令tr

【Linux】字符转换命令tr

  tr (traslate的缩写)可以用来删除一段信息当中的文字,或者是进行文字信息的替换!

[root@www ~]# tr [-ds] SET1 ...
选项与参数:
-d  :删除信息当中的 SET1 这个字符串;
-s  :取代掉重复的字符!

范例一:将 last 输出的信息中,所有的小写变成大写字符:
[root@www ~]# last | tr [a-z] [A-Z]
# 事实上,没有加上单引号也是可以运行的,如:『 last | tr [a-z] [A-Z] 』

范例二:将 /etc/passwd 输出的信息中,将冒号 (:) 删除
[root@www ~]# cat /etc/passwd | tr -d :

范例三:将 /etc/passwd 转存成 dos 断行到 /root/passwd 中,再将 ^M 符号删除
[root@www ~]# cp /etc/passwd /root/passwd && unix2dos /root/passwd
[root@www ~]# file /etc/passwd /root/passwd
/etc/passwd:  ASCII text
/root/passwd: ASCII text, with CRLF line terminators <==就是 DOS 断行
[root@www ~]# cat /root/passwd | tr -d \r > /root/passwd.linux
# 那个 \r 指的是 DOS 的断行字符,关于更多的字符,请参考 man tr
[root@www ~]# ll /etc/passwd /root/passwd*
-rw-r--r-- 1 root root 1986 Feb  6 17:55 /etc/passwd
-rw-r--r-- 1 root root 2030 Feb  7 15:55 /root/passwd
-rw-r--r-- 1 root root 1986 Feb  7 15:57 /root/passwd.

  其实这个命令也可以写在『正规表示法』里头!因为他也是由正规表示法的方式来取代数据的! 以上面的例子来说,使用 [] 可以配置一串字呢!也常常用来取代文件中的怪异符号! 例如上面第三个例子当中,可以去除 DOS 文件留下来的 ^M 这个断行的符号!这东西相当的有用!相信处理 Linux & Windows 系统中的人们最麻烦的一件事就是这个事情啦!亦即是 DOS 底下会自动的在每行行尾加入 ^M 这个断行符号!这个时候我们可以使用这个 tr 来将 ^M 去除! ^M 可以使用 \r 来代替之!

  参考资料:http://vbird.dic.ksu.edu.tw/linux_basic/0320bash.php#pipe_4