• shell-命令_cut



        该命令有两项功能,其一是用来显示文件的内容,它依次读取由参数file所指明的文件,将它们的内容输出到标准输出上;其二是连接两个或多个文件,如cut fl f2 > f3将把文件fl和f2的内容合并起来,然后通过输出重定向符“>”的作用,将它们放入文件f3中。

        当文件较大时,文本在屏幕上迅速闪过(滚屏),用户往往看不清所显示的内容。因此,一般用more等命令分屏显示。

      为了控制滚屏,可以按Ctrl+S键,停止滚屏;按Ctrl+Q键可以恢复滚屏。按Ctrl+C(中断键可以终止该命令的执行,并且返回Shell提示符状态。

    语法格式:

    # cut (选项) (参数)

    选项:

    • -b:仅显示行中指定直接范围的内容;
    • -c:仅显示行中指定范围的字符;
    • -d:指定字段的分隔符,默认的字段分隔符为“TAB”;
    • -f:与-d一起使用,显示指定字段的内容;
    • -n:与“-b”选项连用,不分割多字节字符;
    • --complement:补足被选择的字节、字符或字段;
    • --out-delimiter=<字段分隔符>:指定输出内容是的字段分割符;
    • --help:显示指令的帮助信息;
    • --version:显示指令的版本信息。

    参数:

    文件:指定要进行内容过滤的文件

    三个定位方法:

    1. 字节(bytes),用选项-b,一个空格算一个字节,一个汉字算三个字节
    2. 字符(characters),用选项-c
    3. 域(fields),用选项-f

       cut的缺点是在处理多空格时。如果文件里面的某些域是由若干个空格来间隔的,那么用cut就有点麻烦了,因为cut只擅长处理“以一个字符间隔”的文本内容


    使用例子

    例一:

    [root@VM_0_9_centos ~]# who
    root     pts/0        2020-07-05 18:49 (59.109.219.127)
    [root@VM_0_9_centos ~]# who |cut -b 3
    o
    [root@VM_0_9_centos ~]# who |cut -b 4
    t
    [root@VM_0_9_centos ~]# who |cut -b 2-10
    oot     p
    [root@VM_0_9_centos ~]# who |cut -b 18-30
         2020-07-
    [root@VM_0_9_centos ~]# who |cut -b 25-30
    20-07-
    [root@VM_0_9_centos ~]# who |cut -b 23-30
    2020-07-
    [root@VM_0_9_centos ~]# who |cut -b 23-33
    2020-07-05


    例二

    [root@VM_0_9_centos ~]# cat /etc/passwd|cut -d : -f 1
    root
    bin
    daemon
    adm
    lp
    sync
    shutdown
    halt
    mail
    uucp
    operator
    games
    gopher
    ftp
    nobody
    vcsa
    abrt
    ntp
    saslauth
    postfix
    sshd
    dbus
    tcpdump
    syslog
    mysql
    apache
    7
    nginx
    [root@VM_0_9_centos ~]# cat /etc/passwd|head -n5|cut -d : -f 1
    root
    bin
    daemon
    adm
    lp
    [root@VM_0_9_centos ~]# cat /etc/passwd|head -n5|cut -d : -f 1,3-5,7
    root:0:0:root:/bin/bash
    bin:1:1:bin:/sbin/nologin
    daemon:2:2:daemon:/sbin/nologin
    adm:3:4:adm:/sbin/nologin
    lp:4:7:lp:/sbin/nologin

    事例3:字符

    按字符cut相对比较简单,中文字符和空格都算一个字符。

    Sun Jul  5 18:58:41 CST 2020
    [root@VM_0_9_centos ~]# date |cut -c 1-5
    Sun J
    [root@VM_0_9_centos ~]# date |cut -c 1-8
    Sun Jul
    [root@VM_0_9_centos ~]# date |cut -c 15
    5
    [root@VM_0_9_centos ~]# date |cut -c 25
    2
    [root@VM_0_9_centos ~]# date |cut -c 25-28
    2020


    事例4:按域

    按域cut

    以/etc/passwd文件为例:

    [root@VM_0_9_centos ~]# head -n5 /etc/passwd |cut -d : -f 1,3-5
    root:0:0:root
    bin:1:1:bin
    daemon:2:2:daemon
    adm:3:4:adm
    lp:4:7:lp

    -d指定域分隔符,-f 指定要剪出哪几个域,这个与awk的输出特定字段功能一样。

    -d选项的默认间隔符就是制表符,所以当你就是要使用制表符的时候,完全就可以省略-d选项,而直接用-f来取域就可以了

  • 相关阅读:
    vs 文件头自动添加注释
    .NET开发人员必知的八个网站
    鼠标移动到曲线图上显示值
    显示器分辨率不同,部分winform控件在其他机器上显示不全
    dotnetcharting 的简单使用
    C#Winform中ToolTip的简单用法,
    SQL Server 2008 报错:已成功与服务器建立连接,但是在登录前的握手期间发生错误
    开源组件整理
    java实现控件的移动及使用鼠标改变控件大小
    基础知识点七
  • 原文地址:https://www.cnblogs.com/sunjianlin/p/13248550.html
Copyright © 2020-2023  润新知