zoukankan      html  css  js  c++  java
  • cut命令

    定义

    cut是一个选取命令,选取文件中的指定字符,主要有如下用途

    (1)文件内容查看

    (2)显示行中的指定部分,删除文件中指定字段

    (3)显示文件的指定内容。

    语法格式

    cut  [-bn] [file] 或 cut [-c] [file]  或  cut [-df] [file]

    使用说明
    cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。
    如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。

    第一,字节(bytes),用选项-b

    第二,字符(characters),用选项-c

    第三,域(fields),用选项-f

    主要参数
    -b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
    -c :以字符为单位进行分割。
    -d :自定义分隔符,默认为制表符。
    -f  :与-d一起使用,指定显示哪个区域。
    -n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的<br />范围之内,该字符将被写出;否则,该字符将被排除。

    使用指南

    按字节,字符,域 切割举例

    (1) 以“字节”定位

    简单取字节
    [centos@s203 ~]$ ll
    total 524
    drwxrwxr-x. 12 centos centos    150 Jan 26 17:17 anaconda3
    drwxrwxr-x.  4 centos centos     37 Oct 11  2018 ha
    drwxrwxr-x.  4 centos centos     37 Jul 22  2018 hadoop
    drwxrwxr-x.  3 centos centos     18 Nov  2  2018 kafka
    drwxrwxr-x.  2 centos centos     19 Aug 23  2018 log
    drwxrwxr-x.  2 centos centos     21 Aug 24  2018 logs
    drwxrwxr-x.  3 centos centos     56 Apr  5 01:03 zookeeper
    -rw-rw-r--.  1 centos centos 534884 Apr  5 01:03 zookeeper.out

    按字节切割:

    [centos@s203 ~]$ ll |cut -b 3
    t
    w
    w
    w
    w
    w
    w
    w
    w

    “字节”定位中,取多字节字节(- 和,)

      -b支持形如3-5的写法,而且多个定位之间用逗号隔开

    [centos@s203 ~]$ cat test.sh
    No Name Mark Percent
    tom 69 91
    jack 71 87
    alex 68 98
    [centos@s203 ~]$ cut  -b 2-4,8 test.sh
    o N
    om 9
    ack
    lex

    但有一点要注意,cut命令如果使用了-b选项,那么执行此命令时,cut会先把-b后面所有的定位进行从索引小到大排序,然后再提取。所以颠倒顺序提取数据的方式不可行。

    [centos@s203 ~]$ cut  -b 8,2-4 test.sh
    o N
    om 9
    ack
    lex

    扩展 -num num-

    [centos@s203 ~]$ cut  -b -4 test.sh
    No N
    tom
    jack
    alex
    [centos@s203 ~]$ cut  -b 4- test.sh
    Name Mark Percent
     69 91
    k 71 87
    x 68 98

    不会重叠

    [centos@s203 ~]$ cat test.sh
    No Name Mark Percent
    tom 69 91
    jack 71 87
    alex 68 98
    [centos@s203 ~]$ cut  -b 4-,-4 test.sh
    No Name Mark Percent
    tom 69 91
    jack 71 87
    alex 68 98
    [centos@s203 ~]$ cut  -b 4-8,3-7 test.sh
     Name
    m 69 9
    ck 71
    ex 68

    (2)以字符为定位

    对单字节字符没有什么不同,对多字节字符的影响比较大。

    [centos@s203 ~]$ cat test.sh

    [centos@s203 ~]$ cut -b 4-,-4 test.sh
    No Name Mark Percent
    王 69 91
    找 71 87
    李 68 98

    [centos@s203 ~]$ cut  -b 1 test1.sh
    N
    ▒
    ▒
    ▒
    
    [centos@s203 ~]$ cut  -c 1 test1.sh
    N
    王
    找
    李

     可以使用-n选项,-n用于告诉cut -b 不要将多字节字符拆开

    [centos@s203 ~]$ cut  -nb 1 test1.sh
    N
    王
    找
    李

    (3)以域为定位

    -b和-c只能在固定格式的文档中提取信息,而对于非固定格式的信息则束手无策

     3.1cut的-d选项的默认间隔符就是制表符,所以当你就是要使用制表符的时候,完全就可以省略-d选项,而直接用-f来取域
    [centos@s203 ~]$ cat -n  test2.sh
         169      91
         271      87
         368      98
         
    [centos@s203 ~]$ cat -T test2.sh^I69^I91
    找^I71^I87
    李^I68^I98
    
    [centos@s203 ~]$ cut -f 2 test2.sh
    69
    71
    68

    3.2 -d后面设置一个空格和字符,可不许设置多个空格或字符,因为cut只允许间隔符是一个字符

    [centos@s203 ~]$ cat test.sh
    No Name Mark Percent
    tom 69 91
    jack 71 87
    alex 68 98
    [centos@s203 ~]$ cut -d ' ' -f 2 test.sh
    Name
    69
    71
    68
    [centos@s203 ~]$ cut -d 'xx' -f 2 test.sh
    cut: the delimiter must be a single character

    cut有哪些缺陷就是在处理多空格时。

    3.3观察指定分隔符和多字段取数

    [centos@s203 ~]$ cat test3.sh
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    [centos@s203
    ~]$ cut -d ':' -f 3-5,7 test3.sh 0:0:root:/bin/bash 1:1:bin:/sbin/nologin 2:2:daemon:/sbin/nologin 3:4:adm:/sbin/nologin 4:7:lp:/sbin/nologin
  • 相关阅读:
    反向迭代
    c++知识点
    LeetCode-Count Bits
    LeetCode-Perfect Rectangle
    LeetCode-Perfect Squares
    LeetCode-Lexicographical Numbers
    LeetCode-Find Median from Data Stream
    LeetCode-Maximal Square
    LeetCode-Number of Digit One
    LeetCode-Combination Sum IV
  • 原文地址:https://www.cnblogs.com/wqbin/p/10931400.html
Copyright © 2011-2022 走看看