linux tr命令


字符转换命令: tr, col, join, paste, expand

回到顶部
我们在 vim 程序编辑器当中,提到过 DOS 断行字符与 Unix 断行字符的不同,并且可以使用 dos2unix 与 unix2dos 来完成转换。好了,那么思考一下,是否还有其他常用的字符替代? 举例来 说,要将大写改成小写,或者是将数据中的 [tab] 按键转成空格键?还有,如何将两篇信息整合成一 篇? 底下我们就来介绍一下这些字符转换命令在管道当中的使用方法:
tr可以用来删除一段信息当中的文字,或者是进行文字信息的替换!
[peter@study ~]$ tr [-ds] SET1 ...
选项与参数:
-d :删除信息当中的 SET1 这个字符串;
-s :取代掉重复的字符!
将 last 输出的信息中,所有的小写变成大写字符:
[peter@study ~]$ last | tr '[a-z]' '[A-Z]'
没有加上单引号也是可以执行的,如:last | tr [a-z] [A-Z]
将/etc/passwd输出的信息中,将冒号(:)删除:
[peter@study ~]$ cat /etc/passwd | tr -d ':'
将/etc/passwd转存成dos断行到/root/passwd中,再将^M符号删除:
[peter@study ~]$ cp /etc/passwd ~/passwd && unix2dos ~/passwd
[peter@study ~]$ file /etc/passwd ~/passwd
/etc/passwd: ASCII text /home/peter/passwd: ASCII text, with CRLF line terminators  #就是 DOS 断行
[peter@study ~]$ cat ~/passwd | tr -d '\r' > ~/passwd.linux    # 那个 \r 指的是 DOS 的断行字符,关于更多的字符,请参考 man tr
[peter@study ~]$ ll /etc/passwd ~/passwd*
-rw-r--r--. 1 root
root
2092 Jun 17 00:20 /etc/passwd
-rw-r--r--. 1 peter peter 2133 Jul 9 22:13 /home/peter/passwd
-rw-rw-r--. 1 peter peter 2092 Jul 9 22:13 /home/peter/passwd.linux
# 处理过后,发现文件大小与原本的 /etc/passwd 就一致了!
其实这个命令也可以写在『正规表示法』里头!因为他也是由正规表示法的方式来取代数据的! 以 上面的例子来说,使用 [] 可以设定一串字呢!也常常用来取代文件中的怪异符号! 例如上面第三 个例子当中,可以去除 DOS 文件留下来的 ^M 这个断行的符号!这东西相当的有用!相信处理Linux & Windows 系统中的人们最麻烦的一件事就是这个事情啦! 亦即是 DOS 底下会自动的在每行行尾加入 ^M 这个断行符号!这个时候除了以前讲过的 dos2unix 之外,我们也可以使用这个 tr 来 将 ^M 去除! ^M 可以使用 \r 来代替之!

本文由initroot编辑整理,转载请注明www.initroot.com

100次点赞 100次阅读