Linux 中 cut 字段提取命令

本部分主要介绍:命令 cut 的命令格式及使用方法,但其使用具有一定局限性。命令 cut 是对列进行筛选的,而命名 grep 是对行进行筛选的,两者结合效果最佳。_

cut 字段提取命令

说明:命令 cut 提取的是列,而命令 grep 提取的是行

  1. 命令格式

    • cut [选项] 文件名 ,一列作为分割对象,默认以 制表符 作为分隔符,当然使用选项 -d 也可以自己指定分隔符。
    • 选项
      1. -f 列号:提取第几列
      2. -d 分隔符:按照指定分隔符分割列
  2. 作用

    • 命令 cut 和 命令 grep 结合才能达到效果。一个对行一个对列。

    • /etc/passwd 进行搜索,搜索 包含 /bin/bash 字符串行(含有 bin/bash 是可以登录的字段)

      1. 命令 cat passwd | grep /bin/bash

        root@localcomputer:/etc# cat passwd | grep /bin/bash
        root:x:0:0:root:/root:/bin/bash
        ss:x:1000:1000:ss,,,:/home/ss:/bin/bash
        
    • 在对上述结果剔除 root 用户

      1. 命令 cat passwd | grep /bin/bash | grep -v root

        root@localcomputer:/etc# cat passwd | grep /bin/bash | grep -v root
        ss:x:1000:1000:ss,,,:/home/ss:/bin/bash
        
    • 对上述结果提取用户名,最终达到筛选出除了 root 用户之外的可以正常登录的用户

      1. 命令 cat passwd | grep /bin/bash | grep -v root | cut -d ":" -f 1

        root@localcomputer:/etc# cat passwd | grep /bin/bash | grep -v root | cut -d ":" -f 1
        ss
        
  3. cut 命令的局限性

    • cut 命令默认分割符 制表符,也可以使用 -d 指定分隔符,但是注意指定分割符后 cut 会严格按照指定的分割符分割列。

    • df -h 命令输出的结果进行筛选,df -h | grep /dev/sda5

      1. 命令 df -h 输出分区信息(这里的空格不是制表符,是空格键)

        文件系统        容量  已用  可用 已用% 挂载点
        udev            957M     0  957M    0% /dev
        tmpfs           198M  1.8M  196M    1% /run
        /dev/sda5        12G  5.6G  5.3G   52% /
        tmpfs           986M     0  986M    0% /dev/shm
        tmpfs           5.0M  4.0K  5.0M    1% /run/lock
        
      2. 筛选设备文件名为 /dev/sda5 的分区,命令 df -h | grep /dev/sda5

        root@localcomputer:/etc# df -h | grep /dev/sda5
        /dev/sda5        12G  5.6G  5.3G   52% /
        
  • 在使用 cut 命令进行提取,但是可以看出 df -h 输出的结果列的间隔不一致,命令 cut 无法很好的分割

    1. 使用 cut -d " " -f 6 命令,对 df -h | grep /dev/sad5 输出结果再次筛选(输出的是空格,因为 cut 是以一个空格分割的,但实际上 /dev/sda5 12G 5.6G 5.3G 52% / 每一个间隙是不一致的)

      root@localcomputer:/etc# df -h | grep /dev/sda5 | cut -d " " -f 6
      
      root@localcomputer:/etc# 
      
  1. 实例

    • 使用 -f 选项,提取列信息

      1. 创建一个文件(文件格式类似表格形式,空格是 tab 键)

        ss@localcomputer:~/test$ cat grade  # 构成如表格
        ID  name    grade
        1   tom     78
        2   jack    89
        
      2. 命令 cut -f 1 grade 查看第一列;命令 cut -f 1,3 grade 查看 1 列和 3 列

        ss@localcomputer:~/test$ cut -f 1 grade
        ID
        1
        2
        ss@localcomputer:~/test$ cut -f 1,3 grade
        ID  grade
        1   78
        2   89
        
    • 使用 -d 指定分割符。提取 /etc/passwd 文件

      1. /etc/passwd 文件样式,是以 : 分割字符的

        root:x:0:0:root:/root:/bin/bash
        daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
        bin:x:2:2:bin:/bin:/usr/sbin/nologin
        sys:x:3:3:sys:/dev:/usr/sbin/nologin
        sync:x:4:65534:sync:/bin:/bin/sync
        
      2. 使用 -d 指定分割符,命令 cut -d ":" -f 1,7 /etc/passwd 提取第一列和第二列。

        root@localcomputer:/etc# cut -d ":" -f 1,7 /etc/passwd
        root:/bin/bash
        daemon:/usr/sbin/nologin
        bin:/usr/sbin/nologin
        sys:/usr/sbin/nologin
        sync:/bin/sync
        games:/usr/sbin/nologin
        

你可能感兴趣的:(Linux 中 cut 字段提取命令)