zoukankan      html  css  js  c++  java
  • linux sort 命令实用手册

    Linux 中的sort 命令是一个很实用的工具,用于对文本内容为单位进行ASCII 码排序,默认按照升序进行排序(当然也可以按照降序)。

    sort 命令的格式如下:

    sort `参数` `文件名`
    

    这里不打算介绍其完整的使用方法,只介绍其重用方法,其完整手册可参看man sort

    比如,我们有如下文本内容,可以看到其内容是无序的,其中有两行333bbb

    >>> cat log.txt 
    _______________
    555
    333
    2222
    666
    333
    bbb
    CCC
    aaa
    ccc
    bbb
    

    1,基本使用

    使用sort 命令,不加任何参数,对该文件进行排序,如下,可看到已按照ASCII 码 进行了排序:

    >>> sort log.txt 
    ________________
    2222
    333
    333
    555
    666
    CCC
    aaa
    bbb
    bbb
    ccc
    

    使用-f 参数可以忽略字符大小写进行排序,注意观察CCC 的位置:

    >>> sort -f log.txt
    ___________________
    2222
    333
    333
    555
    666
    aaa
    bbb
    bbb
    CCC
    ccc
    
    

    使用-r 参数可以进行反向排序:

    >>> sort -r log.txt 
    ___________________
    ccc
    bbb
    bbb
    aaa
    CCC
    666
    555
    333
    333
    2222
    

    使用-u 参数,可以对重复行进行去重,可以看到只剩下一行333bbb

    >>> sort -u log.txt 
    ___________________
    2222
    333
    555
    666
    CCC
    aaa
    bbb
    ccc
    

    使用-o 参数,可以将排序结果写到某个文件(也可以是原文件),如下,将文件内容输出到log.txt2

    sort -u log.txt -o log.txt2
    

    使用-n 参数,可以将排序结果按照数字大小进行排序,可以看到2222 排在了666 下面,这里只关心数字之间的次序就行(不需要关心字母数字的关系):

    >>> sort -n log.txt
    ___________________
    aaa
    bbb
    bbb
    ccc
    333
    333
    555
    666
    2222
    

    2,进阶使用

    sort 命令还可以对行内容,先进行分割,再按照某列进行排序,这时需要用到-t-k 参数。

    -t 参数用于设置以什么字符为分隔符,-k 参数用于以分割后的哪一列进行排序,如果没有设置,默认会按照第一列进行排序。

    比如,我们有如下内容,每行内容以逗号,分割,注意第4行只有一列ddd

    >>> cat log2.txt 
    ________________
    bbb,333
    aaa,2222
    ccc,66
    ddd,
    bbb,555
    

    我们以逗号, 进行分割,并按照第一列进行排序,如下:

    >>> sort -t , log2.txt 
    ______________________
    aaa,2222
    bbb,333
    bbb,555
    ccc,66
    ddd,
    

    按照第一列的第二个字符开始排序,如下1.2 表示从第一列的第二个字符开始排序:

    >>> sort -t , -k 1.2 log2.txt
    _____________________________
    aaa,2222
    bbb,333
    bbb,555
    ccc,66
    ddd,
    

    按照第二列,并以数字大小进行排序,如下:

    >>> sort -t , -k 2 -n log2.txt 
    ——————————————————————————————
    ddd,
    ccc,66
    bbb,333
    bbb,555
    aaa,2222
    

    先按照第二列,再按照第一列进行排序,如下:

    >>> sort -t , -k 2 -k 1  log2.txt 
    _________________________________
    ddd,
    aaa,2222
    bbb,333
    bbb,555
    ccc,66
    

    下面总结一下以上讲到的参数及其含义:

    参数 含义
    -f 将小写字母视为大写字母,即忽略大小写
    -r 反向排序
    -u 去重
    -o 输出到文件
    -n 以数字大小进行排序
    -t 设置分隔符
    -k 设置按照第几列排序,与-t 参数配合使用

    (完。)

  • 相关阅读:
    office2007/2010/2013输入公式的正确方式
    寻找与网页内容相关的图片(三)网易新闻与qq空间的做法
    寻找与网页内容相关的图片(二)reddit的做法
    用matplotlib绘制漫画风格的图表
    Monty Hall悖论
    天气中的概率 | 连续两天的天气独立吗?
    寻找与网页内容相关的图片(一) 开放图谱计划
    识别验证码:寻找数字的位置(三)
    识别验证码:寻找数字的位置(二)
    识别验证码:寻找数字的位置(一)
  • 原文地址:https://www.cnblogs.com/codeshell/p/12726531.html
Copyright © 2011-2022 走看看