zoukankan      html  css  js  c++  java
  • Shell 编程 排序工具 sort 和 uniq

    CentOS-Logo

    本篇主要写一些shell脚本排序工具的使用。


    sort

    概述

    sort是一个以行为单位对文件内容进行排序的工具,也可以根据不同的数据类型来排序。

    用法

    • sort [选项] 参数

    -f:忽略大小写
    -b:忽略每行前面的空格
    -M:按照月份进行排序
    -n:按照数字进行排序
    -r:反向排序
    -u:等同于uniq,表示相同的数据仅显示一行
    -t:指定分隔符,默认使用Tab键分隔
    -o <输出文件>:将排序后的结果转存至指定文件
    -k:指定排序区域

    示例

    • /etc/passwd文件中的账号进行排序
    [root@localhost ~]# sort /etc/passwd
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    bin:x:1:1:bin:/bin:/sbin/nologin
    chrony:x:998:996::/var/lib/chrony:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    dbus:x:81:81:System message bus:/:/sbin/nologin
    ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
    games:x:12:100:games:/usr/games:/sbin/nologin
    halt:x:7:0:halt:/sbin:/sbin/halt
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    nobody:x:99:99:Nobody:/:/sbin/nologin
    operator:x:11:0:operator:/root:/sbin/nologin
    polkitd:x:999:997:User for polkitd:/:/sbin/nologin
    postfix:x:89:89::/var/spool/postfix:/sbin/nologin
    root:x:0:0:root:/root:/bin/bash
    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
    sync:x:5:0:sync:/sbin:/bin/sync
    systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
    
    • /etc/passwd文件中第3列进行反向排序
    [root@localhost ~]# sort -t ':' -rk 3 /etc/passwd
    nobody:x:99:99:Nobody:/:/sbin/nologin
    polkitd:x:999:997:User for polkitd:/:/sbin/nologin
    chrony:x:998:996::/var/lib/chrony:/sbin/nologin
    postfix:x:89:89::/var/spool/postfix:/sbin/nologin
    dbus:x:81:81:System message bus:/:/sbin/nologin
    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
    halt:x:7:0:halt:/sbin:/sbin/halt
    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    sync:x:5:0:sync:/sbin:/bin/sync
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
    ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
    games:x:12:100:games:/usr/games:/sbin/nologin
    bin:x:1:1:bin:/bin:/sbin/nologin
    operator:x:11:0:operator:/root:/sbin/nologin
    root:x:0:0:root:/root:/bin/bash
    
    • /etc/passwd文件中第3列进行排序,并将输出内容保存至user.txt
    [root@localhost ~]# sort -t ':' -k 3 /etc/passwd -o user.txt
    [root@localhost ~]# cat user.txt 
    root:x:0:0:root:/root:/bin/bash
    operator:x:11:0:operator:/root:/sbin/nologin
    bin:x:1:1:bin:/bin:/sbin/nologin
    games:x:12:100:games:/usr/games:/sbin/nologin
    ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
    systemd-network:x:192:192:systemd Network Management:/:/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
    sync:x:5:0:sync:/sbin:/bin/sync
    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    halt:x:7:0:halt:/sbin:/sbin/halt
    sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    dbus:x:81:81:System message bus:/:/sbin/nologin
    postfix:x:89:89::/var/spool/postfix:/sbin/nologin
    chrony:x:998:996::/var/lib/chrony:/sbin/nologin
    polkitd:x:999:997:User for polkitd:/:/sbin/nologin
    nobody:x:99:99:Nobody:/:/sbin/nologin
    

    uniq

    概述

    uniq工具通常与sort命令结合使用,用于报告或者忽略文件中的重复行。

    用法

    • uniq [选项] 参数

    -c:进行计数
    -d:仅显示重复行
    -u:仅显示出现一次的行

    示例

    • 删除test.txt文件中重复行
    [root@localhost ~]# cat test.txt 
    centos5
    centos5
    centos5
    centos6
    centos5
    centos5
    centos7
    centos8
    centos8
    centos8
    
    [root@localhost ~]# uniq test.txt 
    centos5
    centos6
    centos5
    centos7
    centos8
    
    • 删除test.txt文件中重复行,并统计改行重复次数
    [root@localhost ~]# uniq -c test.txt
          3 centos5
          1 centos6
          2 centos5
          1 centos7
          3 centos8
    
    • 查找test.txt文件中重复行
    [root@localhost ~]# uniq -d test.txt
    centos5
    centos5
    centos8
    
    • 查找test.txt文件中只出现一次的行
    [root@localhost ~]# uniq -u test.txt
    centos6
    centos7
    
  • 相关阅读:
    材料订单不在IN_MO或者IN_SCFHEADER中
    FP ABPPMGR表 其它常用存储过程
    ORA-01578 ORACLE data block corrupted (file # 29, block # 2889087)
    PR合并回写
    MySQL优化
    分享一些JVM常见的面试题(转)
    怎么保证 redis 和 db 中的数据一致
    User space(用户空间) 与 Kernel space(内核空间)
    如何设计一个安全的对外接口?(转)
    Jstack命令详解
  • 原文地址:https://www.cnblogs.com/llife/p/11682072.html
Copyright © 2011-2022 走看看