美文网首页
Linux 命令之 cut、sort、uniq

Linux 命令之 cut、sort、uniq

作者: Manchangdx | 来源:发表于2018-10-24 21:53 被阅读0次

    一、cut

    cut 是一个选取命令,就是将一段数据经过分析,取出我们想要的。一般来说,选取信息通常是针按 “行” 来进行分析的。cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段送到标准输出。

    常用参数:

    • -b :以字节为单位进行分割
    • -c :以字符为单位进行分割
    • -d :自定义分隔符,默认为制表符
    • -f :与 -d 一起使用,指定显示哪个区域

    举个例子:

    shiyanlou:~/ $ head -n 3 /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
    bin:x:2:2:bin:/bin:/usr/sbin/nologin
    
    # 以冒号作为分隔符,取第一段和第六段
    shiyanlou:~/ $ head -n 3 /etc/passwd | cut -d : -f 1,6 
    root:/root
    daemon:/usr/sbin
    bin:/bin
    
    # macOS 的例子
    ~/test  nl a.txt
         1  _analyticsd:*:263:263:Analytics:/var/db/analyticsd:/usr/bin/false
         2  _fpsd:*:265:265:FPS Daemon:/var/db/fpsd:/usr/bin/false
         3  _timed:*:266:266:Time Sync Daemon:/var/db/timed:/usr/bin/false
    
    ~/test  cut -f 1,6 -d : a.txt
    _analyticsd:/var/db/analyticsd
    _fpsd:/var/db/fpsd
    _timed:/var/db/timed
    
    # 前五个(包含第五个)
    $ cut /etc/passwd -c -5
    # 第五个之后的(包含第五个)
    $ cut /etc/passwd -c 5-
    # 第五个
    $ cut /etc/passwd -c 5
    # 2到5之间的(包含第二、五个)
    $ cut /etc/passwd -c 2-5
    

    二、sort

    sort 命令在 Linux 里非常有用,它将文本数据进行排序,并将排序结果标准输出。sort 命令既可以从特定的文件,也可以从 stdin 中获取数据。

    默认为字典排序:

    $ cat /etc/passwd | sort
    

    反转排序:

    $ cat /etc/passwd | sort -r
    

    按特定字段排序:

    $ cat /etc/passwd | sort -t':' -k 3
    

    上面的 -t 参数用于指定字段的分隔符,这里是以 : 作为分隔符;-k 字段号用于指定对哪一个字段进行排序。这里 /etc/passwd 文件的第三个字段为数字,默认情况下是以字典序排序的,如果要按照数值排序就要加上 -n 参数:

    $ cat /etc/passwd | sort -t':' -k 3 -n
    

    三、uniq

    uniq 可以用来按行去重

    3.1 简单例子:

    ~/test  cat a.txt
    vim
    vim
    vim
    vimtutor
    virtualenv
    wc
    wc
    wget
    wget
    wget
    which
    ~/test  cat a.txt | uniq
    vim
    vimtutor
    virtualenv
    wc
    wget
    which
    ~/test  uniq a.txt   # 同上
    vim
    vimtutor
    virtualenv
    wc
    wget
    which
    

    3.2 -u 显示无重复的行:

    ~/test  cat a.txt | uniq -u
    vimtutor
    virtualenv
    which
    

    3.3 -d 显示有重复的行:

    ~/test  uniq -d a.txt
    vim
    wc
    wget
    

    3.4 -c 显示每行重复的次数:

    ~/test  cat a.txt | uniq -c
       3 vim
       1 vimtutor
       1 virtualenv
       2 wc
       3 wget
       1 which
    

    3.5 综合命令:

    history | cut -c 8- | cut -f 1 -d ' ' | sort | uniq -c | sort -n | wc -l
    

    相关文章

      网友评论

          本文标题:Linux 命令之 cut、sort、uniq

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