5.5 使用cut截取文本

顾名思义,cut就是截取的意思,它能处理的对象是“一行”文本,可从中选取出用户所需要的部分。在有特定的分隔符时,可以指定分隔符,然后打印出以分隔符隔开的具体某一列或某几列,这里cut的用法如下:


  1. [root@localhost ~]# cut -f
  2. 指定的列 -d'
  3. 分隔符'

举个例子,在文件etcpasswd中,每行都是使用6个冒号隔开的7列文本,那么很容易使用cut的这个功能来提取出特定的信息。比如说我们需要打印出系统中的所有用户:


  1. [root@localhost ~]# cat etcpasswd | cut -f1 -d':'

或者想同时打印出用户和这个用户的家目录:


  1. [root@localhost ~]# cat etcpasswd | cut -f1,6 -d':'
  2. root:/root
  3. bin:/bin
  4. daemon:/sbin
  5. adm:/var/adm
  6. ......(
  7. 略去内容)......

如果还想同时打印出每位用户的登录shell:


  1. [root@localhost ~]# cat etcpasswd | cut -f1,6-7 -d':'
  2. root:/root:/bin/bash
  3. bin:/bin:/sbin/nologin
  4. daemon:/sbin:/sbin/nologin
  5. adm:/var/adm:/sbin/nologin
  6. ......(
  7. 略去内容)......

以上cut使用的场景是在处理的行中有特定分隔符的时候,但如果要处理的行是没有分隔符的,那是不是cut就没有用武之地了?答案是否定的,cut还可以打印指定的字符,这时候cut的用法如下:


  1. [root@localhost ~]# cut -c
  2. 指定列的字符

继续使用etcpasswd为例子,假设想要打印出每行第1~5个字符,以及第7~10个字符的内容,如下所示:


  1. [root@localhost ~]# cat etcpasswd | cut -c1-5,7-10
  2. root::0:0
  3. bin:x1:1:
  4. daemo:x:2
  5. adm:x3:4:
  6. ......(
  7. 略去内容)......