美文网首页linux常用命令
文件查看及处理命令-06-cut命令

文件查看及处理命令-06-cut命令

作者: 夏胖运维 | 来源:发表于2020-11-27 23:02 被阅读0次

    1. 命令介绍

    cut命令用来显示行中的指定部分,删除文件中指定字段。cut经常用来显示文件的内容。

    2. 命令格式、

    cut OPTION... [FILE]...
    

    3. 命令功能

    其一是用来显示文件的内容,它依次读取由参数file所指明的文件,将它们的内容输出到标准输出上;

    其二是连接两个或多个文件,如cut fl f2 > f3将把文件fl和几的内容合并起来,然后通过输出重定向符“>”的作用,将它们放入文件f3中。

    4. 常用选项

    选项 含义
    -d 指定字段的分隔符,默认的字段分隔符为“TAB”;
    -f 显示指定字段的内容;
    --complement 此选项用于排除所指定的字段。
    --output-delimiter 更改输出内容的分隔符。

    5. 常用实例

    1. 如何分割文件内容

    cut最常用的选项是-d和-f的组合。它基本上会根据特定的分隔符和列出的字段提取内容。

    下面的代码仅使用分隔符:打印/etc/passwd文件中每一行的第一个字段。

    [root@localhost ~]# cut -d ':' -f 1 /etc/passwd
    root
    bin
    daemon
    adm
    lp
    sync
    shutdown
    halt
    mail
    operator
    games
    ftp
    nobody
    systemd-network
    dbus
    polkitd
    tss
    abrt
    sshd
    postfix
    ntp
    tcpdump
    

    下面的代码从/etc/passwd文件提取第一和第六个字段:

    [root@localhost ~]# cut -d ':' -f 1,6 /etc/passwd
    root:/root
    bin:/bin
    daemon:/sbin
    adm:/var/adm
    lp:/var/spool/lpd
    sync:/sbin
    shutdown:/sbin
    halt:/sbin
    mail:/var/spool/mail
    operator:/root
    games:/usr/games
    ftp:/var/ftp
    nobody:/
    systemd-network:/
    dbus:/
    polkitd:/
    tss:/dev/null
    abrt:/etc/abrt
    sshd:/var/empty/sshd
    postfix:/var/spool/postfix
    ntp:/etc/ntp
    tcpdump:/
    

    要显示字段的范围,请指定以 - 分隔的开始字段和结束字段,如下所示:

    [root@localhost ~]# cut -d ':' -f 1-4,6,7 /etc/passwd
    root:x:0:0:/root:/bin/bash
    bin:x:1:1:/bin:/sbin/nologin
    daemon:x:2:2:/sbin:/sbin/nologin
    adm:x:3:4:/var/adm:/sbin/nologin
    lp:x:4:7:/var/spool/lpd:/sbin/nologin
    sync:x:5:0:/sbin:/bin/sync
    shutdown:x:6:0:/sbin:/sbin/shutdown
    halt:x:7:0:/sbin:/sbin/halt
    mail:x:8:12:/var/spool/mail:/sbin/nologin
    operator:x:11:0:/root:/sbin/nologin
    games:x:12:100:/usr/games:/sbin/nologin
    ftp:x:14:50:/var/ftp:/sbin/nologin
    nobody:x:99:99:/:/sbin/nologin
    systemd-network:x:192:192:/:/sbin/nologin
    dbus:x:81:81:/:/sbin/nologin
    polkitd:x:999:998:/:/sbin/nologin
    tss:x:59:59:/dev/null:/sbin/nologin
    abrt:x:173:173:/etc/abrt:/sbin/nologin
    sshd:x:74:74:/var/empty/sshd:/sbin/nologin
    postfix:x:89:89:/var/spool/postfix:/sbin/nologin
    ntp:x:38:38:/etc/ntp:/sbin/nologin
    tcpdump:x:72:72:/:/sbin/nologin
    
    1. 排除所指定的字段

    在下面的代码中,打印所有字段,除了 /etc/passwd 文件中的第二个字段密码段:

    [root@localhost ~]# cut -d ':' --complement -f 2 /etc/passwd
    root:0:0:root:/root:/bin/bash
    bin:1:1:bin:/bin:/sbin/nologin
    daemon:2:2:daemon:/sbin:/sbin/nologin
    adm:3:4:adm:/var/adm:/sbin/nologin
    lp:4:7:lp:/var/spool/lpd:/sbin/nologin
    sync:5:0:sync:/sbin:/bin/sync
    shutdown:6:0:shutdown:/sbin:/sbin/shutdown
    halt:7:0:halt:/sbin:/sbin/halt
    mail:8:12:mail:/var/spool/mail:/sbin/nologin
    operator:11:0:operator:/root:/sbin/nologin
    games:12:100:games:/usr/games:/sbin/nologin
    ftp:14:50:FTP User:/var/ftp:/sbin/nologin
    nobody:99:99:Nobody:/:/sbin/nologin
    systemd-network:192:192:systemd Network Management:/:/sbin/nologin
    dbus:81:81:System message bus:/:/sbin/nologin
    polkitd:999:998:User for polkitd:/:/sbin/nologin
    tss:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
    abrt:173:173::/etc/abrt:/sbin/nologin
    sshd:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
    postfix:89:89::/var/spool/postfix:/sbin/nologin
    ntp:38:38::/etc/ntp:/sbin/nologin
    tcpdump:72:72::/:/sbin/nologin
    
    1. 如何指定一个输出内容的分隔符

    要指定输出分隔符,请使用--output-delimiter选项。输入分隔符由-d选项指定,默认情况下输出分隔符与输入分隔符相同。
    先看一下没有使用--output-delimiter选项,是什么样子的:

    [root@localhost ~]# cut -d ':' -f 1,7 /etc/passwd
    root:/bin/bash
    bin:/sbin/nologin
    daemon:/sbin/nologin
    adm:/sbin/nologin
    lp:/sbin/nologin
    sync:/bin/sync
    shutdown:/sbin/shutdown
    halt:/sbin/halt
    mail:/sbin/nologin
    operator:/sbin/nologin
    games:/sbin/nologin
    ftp:/sbin/nologin
    nobody:/sbin/nologin
    systemd-network:/sbin/nologin
    dbus:/sbin/nologin
    polkitd:/sbin/nologin
    tss:/sbin/nologin
    abrt:/sbin/nologin
    sshd:/sbin/nologin
    postfix:/sbin/nologin
    ntp:/sbin/nologin
    tcpdump:/sbin/nologin
    nginx:/sbin/nologin
    

    现在使用--output-delimiter选项,输出分隔符使用’ ‘空格分隔,看一下是什么样子的:

    [root@localhost ~]# cut -d ':' -f 1,7 --output-delimiter=' ' /etc/passwd
    root /bin/bash
    bin /sbin/nologin
    daemon /sbin/nologin
    adm /sbin/nologin
    lp /sbin/nologin
    sync /bin/sync
    shutdown /sbin/shutdown
    halt /sbin/halt
    mail /sbin/nologin
    operator /sbin/nologin
    games /sbin/nologin
    ftp /sbin/nologin
    nobody /sbin/nologin
    systemd-network /sbin/nologin
    dbus /sbin/nologin
    polkitd /sbin/nologin
    tss /sbin/nologin
    abrt /sbin/nologin
    sshd /sbin/nologin
    postfix /sbin/nologin
    ntp /sbin/nologin
    tcpdump /sbin/nologin
    nginx /sbin/nologin
    
    1. 指定字段的字符或者字节范围

    cut命令可以将一串字符作为列来显示,字符字段的记法:

    • N-:从第N个字节、字符、字段到结尾;
    • N-M:从第N个字节、字符、字段到第M个(包括M在内)字节、字符、字段;
    • -M:从第1个字节、字符、字段到第M个(包括M在内)字节、字符、字段。

    上面是记法,结合下面选项将摸个范围的字节、字符指定为字段:

    • -b 表示字节;
    • -c 表示字符;
    • -f 表示定义字段。

    文本内容如下

    [root@localhost ~]# cat test.txt
    abcdefghijklmnopqrstuvwxyz
    abcdefghijklmnopqrstuvwxyz
    abcdefghijklmnopqrstuvwxyz
    abcdefghijklmnopqrstuvwxyz
    abcdefghijklmnopqrstuvwxyz
    
    • 打印第一个到第三个字符串
    [root@localhost ~]# cut -c 1-3 test.txt 
    abc
    abc
    abc
    abc
    abc
    
    • 打印前2个字符
    [root@localhost ~]# cut -c -2 test.txt 
    ab
    ab
    ab
    ab
    ab
    
    • 从第5个字符开始打印
    [root@localhost ~]# cut -c 5- test.txt
    efghijklmnopqrstuvwxyz
    efghijklmnopqrstuvwxyz
    efghijklmnopqrstuvwxyz
    efghijklmnopqrstuvwxyz
    efghijklmnopqrstuvwxyz
    

    相关文章

      网友评论

        本文标题:文件查看及处理命令-06-cut命令

        本文链接:https://www.haomeiwen.com/subject/zblfwktx.html