zoukankan      html  css  js  c++  java
  • sort命令详解

    1、工作原理:

    sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。

    [rocrocket@rocrocket programming]$ cat seq.txt
    banana
    apple
    pear
    orange
    [rocrocket@rocrocket programming]$ sort seq.txt
    apple
    banana
    orange
    pear
    

    2、sort -u

    -u : unique 唯一,排序并且排除重复项

    [rocrocket@rocrocket programming]$ cat seq.txt
    banana
    apple
    pear
    orange
    pear
    [rocrocket@rocrocket programming]$ sort seq.txt
    apple
    banana
    orange
    pear
    pear
    [rocrocket@rocrocket programming]$ sort -u seq.txt
    apple
    banana
    orange
    pear
    
    pear由于重复被-u选项无情的删除了。
    

    3、sort -r

    -r : reverse 反向排序

    [rocrocket@rocrocket programming]$ cat number.txt
    1
    3
    5
    2
    4
    [rocrocket@rocrocket programming]$ sort number.txt
    1
    2
    3
    4
    5
    [rocrocket@rocrocket programming]$ sort -r number.txt
    5
    4
    3
    2
    1
    

    4、sort -o

    -o : output 将排序结果输出到源文件
    sort默认将结果输出到标准输出,所以需要重定向才可以将结果写入文件,形如 sort filename > newfile
    但是如果你想把排序结果输出到原文件中,用重定向不可行

    [rocrocket@rocrocket programming]$ sort -r number.txt > number.txt
    [rocrocket@rocrocket programming]$ cat number.txt
    [rocrocket@rocrocket programming]$
    

    使用 -o 参数可以正常输出到源文件

    [rocrocket@rocrocket programming]$ cat number.txt
    1
    3
    5
    2
    4
    [rocrocket@rocrocket programming]$ sort -r number.txt -o number.txt
    [rocrocket@rocrocket programming]$ cat number.txt
    5
    4
    3
    2
    1
    

    5、sort -n

    -n : number 安装数字进行排序,默认数字会被当作字符串进行比较,会出现一下情况

    [rocrocket@rocrocket programming]$ cat number.txt
    1
    10
    19
    11
    2
    5
    [rocrocket@rocrocket programming]$ sort number.txt
    1
    10
    11
    19
    2
    5
    

    使用 -n 参数以后

    [rocrocket@rocrocket programming]$ sort -n number.txt
    1
    2
    5
    10
    11
    19
    

    6、sort -t -k 参数

    -t : tables 指定分隔符,默认tab为分隔符
    -k: 指定安装哪一个分割区域进行排序

    [rocrocket@rocrocket programming]$ cat facebook.txt
    banana:30:5.5
    apple:10:2.5
    pear:90:2.3
    orange:20:3.4
    [rocrocket@rocrocket programming]$ sort -n -k 2 -t : facebook.txt
    # -n 按照数字进行排序
    # -t 此例中指定 : 为分隔符
    # -k 此例中按照分割的第二区域进行排序
    apple:10:2.5
    orange:20:3.4
    banana:30:5.5
    pear:90:2.3
    

    7、其他的sort常用选项

    • -f会将小写字母都转换为大写字母来进行比较,亦即忽略大小写
    • -c会检查文件是否已排好序,如果乱序,则输出第一个乱序的行的相关信息,最后返回1
    • -C会检查文件是否已排好序,如果乱序,不输出内容,仅返回1
    • -M会以月份来排序,比如JAN小于FEB等等
    • -b会忽略每一行前面的所有空白部分,从第一个可见字符开始比较。
  • 相关阅读:
    Miox带你走进动态路由的世界——51信用卡前端团队
    从零开始搭建Vue组件库 VV-UI
    你不知的DOM编程
    浅谈前后端分离与实践(一)
    处理 Vue 单页面应用 SEO 的另一种思路
    Vue服务端渲染和Vue浏览器端渲染的性能对比
    实例PK(Vue服务端渲染 VS Vue浏览器端渲染)
    使用ES6+Vue+webpack+gulp构建新一代Web应用
    耐克的定制页用canvas如何实现....跪求前端大神指点。
    Unity热更新学习(二) —— ToLua c#与lua的相互调用
  • 原文地址:https://www.cnblogs.com/zhangsubai/p/6861697.html
Copyright © 2011-2022 走看看