5.5 使用cut截取文本
顾名思义,cut就是截取的意思,它能处理的对象是“一行”文本,可从中选取出用户所需要的部分。在有特定的分隔符时,可以指定分隔符,然后打印出以分隔符隔开的具体某一列或某几列,这里cut的用法如下:
- [root@localhost ~]# cut -f
- 指定的列 -d'
- 分隔符'
举个例子,在文件etcpasswd中,每行都是使用6个冒号隔开的7列文本,那么很容易使用cut的这个功能来提取出特定的信息。比如说我们需要打印出系统中的所有用户:
- [root@localhost ~]# cat etcpasswd | cut -f1 -d':'
或者想同时打印出用户和这个用户的家目录:
- [root@localhost ~]# cat etcpasswd | cut -f1,6 -d':'
- root:/root
- bin:/bin
- daemon:/sbin
- adm:/var/adm
- ......(
- 略去内容)......
如果还想同时打印出每位用户的登录shell:
- [root@localhost ~]# cat etcpasswd | cut -f1,6-7 -d':'
- root:/root:/bin/bash
- bin:/bin:/sbin/nologin
- daemon:/sbin:/sbin/nologin
- adm:/var/adm:/sbin/nologin
- ......(
- 略去内容)......
以上cut使用的场景是在处理的行中有特定分隔符的时候,但如果要处理的行是没有分隔符的,那是不是cut就没有用武之地了?答案是否定的,cut还可以打印指定的字符,这时候cut的用法如下:
- [root@localhost ~]# cut -c
- 指定列的字符
继续使用etcpasswd为例子,假设想要打印出每行第1~5个字符,以及第7~10个字符的内容,如下所示:
- [root@localhost ~]# cat etcpasswd | cut -c1-5,7-10
- root::0:0
- bin:x1:1:
- daemo:x:2
- adm:x3:4:
- ......(
- 略去内容)......