八、简单的文本处理
一、实验介绍
1.1 实验内容
这一节我们将介绍这几个命令tr
(注意不是 tar),col
,join
,paste
。实际这一节是上一节关于能实现管道操作的命令的延续,所以我们依然将结合管道来熟悉这些命令的使用。
1.2 实验知识点
二、文本处理命令
2.1 tr 命令
tr 命令可以用来删除一段文本信息中的某些文字。或者将其进行转换。
使用方式:
1
| tr [option]...SET1 [SET2]
|
常用的选项有:
选项 |
说明 |
-d |
删除和 set1 匹配的字符,注意不是全词匹配也不是按字符顺序匹配 |
-s |
去除 set1 指定的在输入文本中连续并重复的字符 |
操作举例:
1 2 3 4 5 6 7
| $ echo 'hello shiyanlou' | tr -d 'olh'
$ echo 'hello' | tr -s 'l'
$ echo 'input some text here' | tr '[:lower:]' '[:upper:]'
|

更多 tr 的使用,你可以使用--help
或者man tr
获得。
2.2 col 命令
col 命令可以将Tab
换成对等数量的空格键,或反转这个操作。
使用方式:
常用的选项有:
选项 |
说明 |
-x |
将Tab 转换为空格 |
-h |
将空格转换为Tab (默认选项) |
操作举例:
1 2 3 4
| $ cat -A /etc/protocols
$ cat /etc/protocols | col -x | cat -A
|

2.3 join 命令
学过数据库的用户对这个应该不会陌生,这个命令就是用于将两个文件中包含相同内容的那一行合并在一起。
使用方式:
1
| join [option]... file1 file2
|
常用的选项有:
选项 |
说明 |
-t |
指定分隔符,默认为空格 |
-i |
忽略大小写的差异 |
-1 |
指明第一个文件要用哪个字段来对比,默认对比第一个字段 |
-2 |
指明第二个文件要用哪个字段来对比,默认对比第一个字段 |
操作举例:
1 2 3 4 5 6 7 8 9
| $ cd /home/shiyanlou
$ echo '1 hello' > file1 $ echo '1 shiyanlou' > file2 $ join file1 file2
$ sudo join -t':' /etc/passwd /etc/shadow
$ sudo join -t':' -1 4 /etc/passwd -2 3 /etc/group
|

2.4 paste 命令
paste
这个命令与join
命令类似,它是在不对比数据的情况下,简单地将多个文件合并一起,以Tab
隔开。
使用方式:
常用的选项有:
选项 |
说明 |
-d |
指定合并的分隔符,默认为 Tab |
-s |
不合并到一行,每个文件为一行 |
操作举例:
1 2 3 4 5
| $ echo hello > file1 $ echo shiyanlou > file2 $ echo www.lanqiao.cn > file3 $ paste -d ':' file1 file2 file3 $ paste -s file1 file2 file3
|
