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
    
  • 相关阅读:
    太白老师 day06 编码 encode decode
    太白老师day6 1.代码块 2.is==id 3.小数据池
    MySQL 基本语法(1.表字段操作,2表记录管理 3.运算符管理4.SQL查询 5.约束6.索引
    List 接口常用子类及其特点
    Java 集合框架
    Java 常用工具类之基本对象包装类
    Java 常用工具类之 String 类
    Java 多线程间通信
    Java 多线程通信之多生产者/多消费者
    Java 之多线程通信(等待/唤醒)
  • 原文地址:https://www.cnblogs.com/llife/p/11682072.html
Copyright © 2011-2022 走看看