• shell文字过滤程序(十):cut命令


    【版权声明:转载请保留源:blog.csdn.net/gentleliu。Mail:shallnew at 163 dot com】

    cut指挥类似至awk,从行内提取的信息,它是一个较弱的版本的功能awk。

    cut命令格式为:cut [options] filename
    当中options有:
    -d  指定与空格和t a b键不同的域分隔符。类似于awk的“-F”。
    -f field  指定剪切域数
    -c list  指定剪切字符数。

    首先我们来处理按:切割的password文件:
    # cat passwd
    root:x:0:0:root:/root:/bin/sh
    proxy:x:13:13:proxy:/bin:/bin/sh
    operator:x:37:37:Operator:/var:/bin/sh
    ftp:x:83:83:ftp:/home/ftp:/bin/sh
    nobody:x:99:99:nobody:/home:/bin/sh
    sshd:x:103:99:Operator:/var:/bin/sh
    
    按:切割,然后取第一列和第六列,-f能够指定获取的域数:
    # cut -d: -f1,6 passwd
    root:/root
    proxy:/bin
    operator:/var
    ftp:/home/ftp
    nobody:/home
    sshd:/var
    
    指定域数还能够这样写:
    # cut -d: -f 1-4,6 passwd
    root:x:0:0:/root
    proxy:x:13:13:/bin
    operator:x:37:37:/var
    ftp:x:83:83:/home/ftp
    nobody:x:99:99:/home
    sshd:x:103:99:/var
    
    awk的实现为:
    # awk -F: 'BEGIN{OFS=":"}{print $1,$2,$3,$4,$6}' passwd    
    root:x:0:0:/root
    proxy:x:13:13:/bin
    operator:x:37:37:/var
    ftp:x:83:83:/home/ftp
    nobody:x:99:99:/home
    sshd:x:103:99:/var
    
    可是假设要指定多个字符来切割的话,cut就不行了。cut仅仅支持单个分隔字符,二awk支持多个。

    比方我们以“bin”分分隔:

    # awk -F"bin" 'BEGIN{OFS=":"}{print $1}' passwd
    root:x:0:0:root:/root:/
    proxy:x:13:13:proxy:/
    operator:x:37:37:Operator:/var:/
    ftp:x:83:83:ftp:/home/ftp:/
    nobody:x:99:99:nobody:/home:/
    sshd:x:103:99:Operator:/var:/
    
    使用cut:
    # cut -d"bin" -f1 passwd                                      
    cut: the delimiter must be a single character
    Try 'cut --help' for more information.
    这里能够看见cut命令的功能非常有限。
    cut默认以tab键来切割,awk默认以空格或多个空格或tab键来切割:
    # sed 's/:/	/g' passwd | cut -f5
    root
    proxy
    Operator
    ftp
    nobody
    Operator
    # sed 's/:/	/g' passwd | awk '{print $5}'
    root
    proxy
    Operator
    ftp
    nobody
    Operator
    cut能够剪切第随意字符。看似功能强大,但非常少有使用价值。

    使用- c选项指定精确剪切数目。这样的方法需确切知道開始及结束字符。

    通常不用这样的方法,除非在固定长度的域或文件名称上。
    来看几个样例即可了:

    # cut -c1,2,4 passwd
    rot
    prx
    opr
    ft:
    noo
    ssd
    # cut -c5-9 passwd       
    :x:0:
    y:x:1
    ator:
    x:83:
    dy:x:
    :x:10
    

    版权声明:本文博主原创文章。博客,未经同意不得转载。假设你认为你的实际物品,请点击以下“最佳”。

  • 相关阅读:
    MySQL数据库学习笔记(八)----JDBC入门及简单增删改数据库的操作
    vim使用技巧大全
    virtualbox下centos虚拟机安装增强工具教程和常见错误解决
    python初始化list列表(1维、2维)
    Python中列表(list)、字典(dict)排序的程序
    字符画
    php 过滤器filter_var验证邮箱/url/ip等
    Python3 MySQL 数据库连接
    PHP socket 服务器框架集
    python3 获取int最大值
  • 原文地址:https://www.cnblogs.com/yxwkf/p/4858694.html
Copyright © 2020-2023  润新知