• Linux 下cut的使用


    Linux下如何剪断你的千丝万缕

    命令是:cut
    从字面上来看,cut 命令与剪切有关,实际也是如此,cut 命令将一个字符串按某种特定的方式进行裁剪提取并输出。结合其它命令,cut 可以很轻松的提取其它命令输出结果中我们所需要的内容。

    cut基本格式:
    cut 选项 文件
    
    命令选项:
    -b: 以字节为单位进行分割;
    -c: 以字符为单位进行分割;
    -d: 自定义分割符,默认是制表符;
    -f: 以区域为单位进行分割,常与 -d 选项一起使用;
    -n: 取消分割多字节字符,仅与 -b 选项同用;
    
    从对 cut 命令的选项描述来看,该命令一般通过三种单位进行分割:字节、字符、域 。下面详细介绍这三种分割方式。
    

    以字节为单位进行分割

    假如现在有个 test1.txt 文件,文件内容如下:
    $ cat test1.txt
    Monday
    Tuesday
    Wednesday
    Thursday
    Friday
    Saturday
    Sunday
     
     
    1.提取每一行的第 1 个字节
    命令如下:
    $ cut -b 1 test1.txt
    M
    T
    W
    T
    F
    S
    S
    
    2.提取每一行的第 2 、4 、6 个字节
    命令如下:
    $ cut -b 2,4,6 test1.txt
    ody
    usa
    ens
    hrd
    rdy
    aud
    udy
    
    3.提取每一行的第 3、4、5、6 个字节
    如果字节是连续的,我们就没必要一个个列出来,只需使用短横杠 - 将区间列出来即可,如下:
    $ cut -b 3-6 test1.txt
    nday
    esda
    dnes
    ursd
    iday
    turd
    nday
    
    4. 提取第 1、2、3 及 6 个字节
    命令如下 :
    $ cut -b 1-3,6 test1.txt
    Mony
    Tuea
    Weds
    Thud
    Friy
    Satd
    Suny
    
    5. 提取前 3 个字节或第 3 个字节之后的内容
    命令如下:
    $ cut -b -3 test1.txt
    Mon
    Tue
    Wed
    Thu
    Fri
    Sat
    Sun
    $ cut -b 3- test1.txt
    nday
    esday
    dnesday
    ursday
    iday
    turday
    nday
    
    

    以字符为单位进行分割

    字节与字符的差别是啥?举个例子吧,a 这是一个字节,而 啊 这是一个字符,明白了吧?对于汉字而言,每一个汉字都是一个字符。
    假如现在有个 test2.txt 文件,它的内容如下:
    $ cat test2.txt
    良许真帅
    守望文章写得好
    小灰仓鼠很可爱
    明哥真爷们
    
    如果以字节为单位分割,那效果是如何的呢?
    $ cut -b 2 test2.txt
    ▒
    ▒
    ▒
    ▒
    很明显,一堆乱码。如果要正确分割字符,那么就需要 -nb 或 -c 选项。
    $ cut -nb 2 test2.txt
    许
    望
    灰
    哥
    $ cut -c 2 test2.txt
    许
    望
    灰
    哥
    
    

    以域为单位进行分割

    域是什么?我们以 /etc/passwd 文件为例说明。
    $ cat /etc/passwd | head -n 5
    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
    从 passwd 文件可以明显看出来,每个用户的各项信息是用冒号 : 进行隔开,所隔开的每项内容都可以称为「域」,而冒号称为「间隔符」。
    
    现在,我们想要提取每一行的第一个域,命令如下:
    $ cat /etc/passwd | head -n 5 | cut -d : -f 1
    root
    bin
    daemon
    adm
    lp
    在这里,我们用 -d 选项来指定冒号 : 为间隔符,然后再用 -f 选项来指定要提取的域。当然,间隔符不仅仅是冒号,我们还可以指定其它符号,比如逗号,空格,等等。
    但是,如果一个字符串里如果两个单词间有多个空格,则 cut 命令将无法分辨,所以这也是 cut 命令的缺陷。
    
    
    
    本文出自T-大帅的博客,转载必须注明出处。 https://www.cnblogs.com/Monarch-T/
  • 相关阅读:
    JS重写alert,保证弹窗错误的友好性
    wpf窗体中复合控件焦点控制
    mybatis特殊字符转义
    SpringMVC HandlerMethodArgumentResolver自定义参数转换器
    IntelliJ IDEA创建maven web项目
    shiro app
    Linux查看日志定位问题
    Flask中使用Flask-Migrate扩展迁移数据库
    flask + pymysql操作Mysql数据库
    HTTP
  • 原文地址:https://www.cnblogs.com/Monarch-T/p/10439866.html
Copyright © 2020-2023  润新知