• 按列抽取文本命令之cut


    cut

    与全文浏览工具cat不同,也与head,tail这些取文本中的列的命令不同。

    cut命令用来取文本中的列。

    [03:19:05 root@C8-3-55 ~]#cut --help
    用法:cut [选项]... [文件]...
    Print selected parts of lines from each FILE to standard output.
    
    如果没有指定文件,或者文件为"-",则从标准输入读取。
    
    必选参数对长短选项同时适用。
      -b, --bytes=列表              只选中指定的这些字节
      -c, --characters=列表         只选中指定的这些字符
      -d, --delimiter=分界符        使用指定分界符代替制表符作为区域分界
      -f, --fields=LIST       select only these fields;  also print any line
                                that contains no delimiter character, unless
                                the -s option is specified
      -n                      with -b: don't split multibyte characters
          --complement              补全选中的字节、字符或域
      -s, --only-delimited          不打印没有包含分界符的行
          --output-delimiter=字符串 使用指定的字符串作为输出分界符,默认采用输入
                                    的分界符
      -z, --zero-terminated    以 NUL 字符而非换行符作为行尾分隔符
          --help            显示此帮助信息并退出
          --version         显示版本信息并退出
    
    仅使用f -b, -c 或-f 中的一个。每一个列表都是专门为一个类别作出的,或者您可以用逗号隔
    开要同时显示的不同类别。您的输入顺序将作为读取顺序,每个仅能输入一次。
    Each range is one of:
    
      N     N'th byte, character or field, counted from 1
      N-    from N'th byte, character or field, to end of line
      N-M   from N'th to M'th (included) byte, character or field
      -M    from first to M'th (included) byte, character or field
    

    用cut命令-d选项将想要的内容从文本中过滤出来

    例:用cut命令取出passwd中的用户名和uid

    • -d: 以 : 做为列的分隔符
    • -f 1,3 分别取第1和第3列

    cut: 分界符必须是单个字符

    [03:25:10 root@C8-3-55 ~]#head -n 5 /etc/passwd | cut -d: -f 1,3
    root:0
    bin:1
    daemon:2
    adm:3
    lp:4
    

    利用 cut -d 取出磁盘使用率的值,方便以后磁盘报警。

    • tr -s ' ' % 将空格替换成%
    • cut -d % -f 5 以%为分隔符的列取第五列
    • tail -n +2 显示从第二行开始的内容
    [03:39:35 root@C8-3-55 ~]#df -h
    文件系统             容量  已用  可用 已用% 挂载点
    devtmpfs             886M     0  886M    0% /dev
    tmpfs                903M     0  903M    0% /dev/shm
    tmpfs                903M   17M  886M    2% /run
    tmpfs                903M     0  903M    0% /sys/fs/cgroup
    /dev/mapper/cl-root   17G  3.4G   14G   20% /
    /dev/sda1            976M  139M  771M   16% /boot
    tmpfs                181M     0  181M    0% /run/user/0
    [03:41:07 root@C8-3-55 ~]#df -h | tr -s ' ' % | cut -d % -f 5 |tail -n +2
    0
    0
    2
    0
    20
    16
    0
    

    cut命令-c选项用字符来分割

    例:利用cut -c 取出磁盘可用空间

    • -c 22-25 22到25列的范围内容
    [03:36:45 root@C8-3-55 ~]#df -h
    文件系统             容量  已用  可用 已用% 挂载点
    devtmpfs             886M     0  886M    0% /dev
    tmpfs                903M     0  903M    0% /dev/shm
    tmpfs                903M   17M  886M    2% /run
    tmpfs                903M     0  903M    0% /sys/fs/cgroup
    /dev/mapper/cl-root   17G  3.4G   14G   20% /
    /dev/sda1            976M  139M  771M   16% /boot
    tmpfs                181M     0  181M    0% /run/user/0
    
    [03:39:20 root@C8-3-55 ~]#df -h | cut -c 22-25
    已用
    886M
    903M
    903M
    903M
     17G
    976M
    181M
    

    利用--output-delimiter选项可以替换列间分割符

    例:计算1连加到100和1连乘到10

    [03:51:42 root@C8-3-55 ~]#echo {1..100} | cut -d ' ' -f 1-100 --output-delimiter="+"| bc
    5050
    [03:45:41 root@C8-3-55 ~]#echo {1..10} | cut -d ' ' -f 1-10 --output-delimiter="*"
    1*2*3*4*5*6*7*8*9*10
    [03:50:15 root@C8-3-55 ~]#echo {1..10} | cut -d ' ' -f 1-10 --output-delimiter="*"| bc
    3628800
    

    检查以下,计算正确

    [03:55:08 root@C8-3-55 ~]#seq -s + 100
    1+2+3+4+5+6+7+8+9+10+11+12+13+14+15+16+17+18+19+20+21+22+23+24+25+26+27+28+29+30+31+32+33+34+35+36+37+38+39+40+41+42+43+44+45+46+47+48+49+50+51+52+53+54+55+56+57+58+59+60+61+62+63+64+65+66+67+68+69+70+71+72+73+74+75+76+77+78+79+80+81+82+83+84+85+86+87+88+89+90+91+92+93+94+95+96+97+98+99+100
    [03:55:39 root@C8-3-55 ~]#seq -s + 100 | bc
    5050
    [03:56:13 root@C8-3-55 ~]#seq -s '*' 10
    1*2*3*4*5*6*7*8*9*10
    [03:56:30 root@C8-3-55 ~]#seq -s '*' 10 | bc
    3628800
    
    * * * 胖并快乐着的死肥宅 * * *
  • 相关阅读:
    十进制,二进制,八进制,十六进制中的相互转换
    oracle中dual表的使用
    弹出窗口
    oracle中的函数
    [导入]几种所见所得的在线编辑器
    操作字符串
    设计模式初认识
    创建型模式之简单工厂模式
    MySQL批量检查表的脚本
    中英文单位对照
  • 原文地址:https://www.cnblogs.com/bpzblog/p/14495337.html
Copyright © 2020-2023  润新知