• uniq,sort,


    语  法:uniq [-cdu][-f<栏位>][-s<字符位置>][-w<字符位置>][--help][--version][输入文件][输出文件]
     
    补充说明:uniq可检查文本文件中重复出现的行列。
     
    参  数:
      -c: 在每列旁边显示该行重复出现的次数。
      -d: 仅显示重复出现的行列。
      -f: 忽略比较指定的栏位。
      -s: 忽略比较指定的字符。
      -u: 仅显示出一次的行列。
      -w: 指定要比较的字符。
      -n:前n个字段和每个字段前的空白一起被忽略
      +n:前n个字符被忽略
      
     
    uniq命令的作用:显示唯一的行,对于那些连续重复的行只显示一次! 
     
      接下来通过实例说明: 
     
    > cat fruits
    apple banana tangerine watermelon walnut
    apple tangerine banana watermelon walnut
    apple tangerine banana watermelon walnut
    tangerine apple banana watermelon walnut
    apple tangerine banana watermelon walnut
    > uniq fruits #不加任何参数,仅显示连续重复的行一次 
    apple banana tangerine watermelon walnut
    apple tangerine banana watermelon walnut
    tangerine apple banana watermelon walnut
    apple tangerine banana watermelon walnut
     
    > uniq -c fruits #-c 参数显示文件中每行[连续]出现的次数
      1 apple banana tangerine watermelon walnut
      2 apple tangerine banana watermelon walnut
      1 tangerine apple banana watermelon walnut
      1 apple tangerine banana watermelon walnut
    >
     
     
    > uniq -d fruits #-d选项仅显示文件中连续重复出现的行
    apple tangerine banana watermelon walnut
    >
     
    > uniq -u fruits #-u选项显示文件中没有连续出现的行
    apple banana tangerine watermelon walnut
    tangerine apple banana watermelon walnut
    apple tangerine banana watermelon walnut
     
      忽略每行的前2个字段,忽略第二个空白字符和第三个字段的首字符,结果是从第三个字段的第二个字符开始比较
    > uniq -f 2 -s 2 fruits
    apple banana tangerine watermelon walnut
    apple tangerine banana watermelon walnut
     
     
     
     
     
     
    ======================================================
     

    sort命令总结

    功能:排序
    语法:sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][--help][--verison][文件]

    参数:
      -b   忽略每行前面开始出的空格字符。
      -d   排序时,处理英文字母、数字及空格字符外,忽略其他的字符。
      -f   排序时,将小写字母视为大写字母。
      -i   排序时,除了040至176之间的ASCII字符外,忽略其他的字符。
      -c   检查文件是否已经按照顺序排序。
      -m   将几个排序好的文件进行合并。
      -M  前面3个字母依照月份的缩写进行排序。
      -n   依照数值的大小排序。
      -o<输出文件>   将排序后的结果存入指定的文件。
      -r   以相反的顺序来排序。
      -t<分隔字符>   指定排序时所用的栏位分隔字符。
      -k 指定域
      --help   显示帮助。
      --version   显示版本信息。
    --------------------------------------------------------------------------------------------------[root@Jesse ~]# cat c.txt
    7 July
    8 August
    9 September
    10 October
    11 November
    12 December
    1 January
    2 February
    3 March
    4 April
    5 May
    6 June
    [root@Jesse ~]# sort -c c.txt
    sort: c.txt:4: disorder: 10 October  //说明未按照某种顺序进行排列,如果什么也不显示,则说明已按某种顺序分类。
    --------------------------------------------------------------------------------------------------[root@Jesse ~]# cat a.txt
    google 110 5000
    baidue 100 5010
    gugeee 120 3000
    sohuee 100 4500
    [root@Jesse ~]# cat b.txt
    3 ladygaga 1
    5 ladygaga 9
    0 ladygaga 5
    9 ladygaga 4
    6 ladygaga 2
    8 ladygaga 3
    7 ladygaga 0
    1 ladygaga 6
    4 ladygaga 7
    2 ladygaga 8
    [root@Jesse ~]# sort -m a.txt c.txt //将两个文件内容整合到一起
    7 July
    8 August
    9 September
    10 October
    11 November
    12 December
    1 January
    2 February
    3 March
    4 April
    5 May
    6 June
    google 110 5000
    baidue 100 5010
    gugeee 120 3000
    sohuee 100 4500
    --------------------------------------------------------------------------------------------------进行月份排序
    [root@Jesse ~]# cat c.txt
     July
     August
     September
     October
     November
     December
     January
     February
     March
     April
     May
     June
    [root@Jesse ~]# sort -M c.txt
     January
     February
     March
     April
     May
     June
     July
     August
     September
     October
     November
     December
    --------------------------------------------------------------------------------------------------[root@Jesse ~]# sort -M c.txt -o d.txt  //将内容排序后导入到d.txt这个文件。
    --------------------------------------------------------------------------------------------------[root@Jesse ~]# cat e.txt
    1
    2
    3
    4
    5
    6
    7
    8
    [root@Jesse ~]# sort -r e.txt   //逆序进行排列
    8
    7
    6
    5
    4
    3
    2
    1
    --------------------------------------------------------------------------------------------------[root@Jesse ~]# cat a.txt
    google 110 5000
    baidue 100 5010
    gugeee 120 3000
    sohuee 100 4500
    [root@Jesse ~]# sort -t" " -k 3 a.txt  //出现空格的地方作为第一域进行分类
    gugeee 120 3000
    sohuee 100 4500
    google 110 5000
    baidue 100 5010
    ########################################################################有关-k 的实例演示
    ########################################################################准备工作:
    [root@Jesse ~]# cat a.txt
    google 110 5000
    baidue 100 5000
    gugeee 120 3000
    sohuee 101 4500
    ------------------------------------------------------------------------------------------------按照字母进行排序,注意 -t 后面的引号里需要有一个空格,这里的单引号,双引号都无所谓
    [root@Jesse ~]# sort -t" " -k 1 a.txt
    baidue 100 5000
    google 110 5000
    gugeee 120 3000
    sohuee 101 4500
    [root@Jesse ~]# sort -t' ' -k 1 a.txt
    baidue 100 5000
    google 110 5000
    gugeee 120 3000
    sohuee 101 4500

    按照以空格为分割域的第二域进行排序
    [root@Jesse ~]# sort -t' ' -k 2 a.txt
    baidue 100 5000
    sohuee 101 4500
    google 110 5000
    gugeee 120 3000

    我们来测试下第二域相同的情况
    [root@Jesse ~]# cat a.txt
    google 110 5000
    baidue 100 5010
    gugeee 120 3000
    sohuee 100 4500

    通过以下实例我们发现,以空格为分割域,第二域相同的时候,第三域是没有任何次序的,如果遇到第二域相同,第三域也要进行排序的时候,我们怎么办呢
    [root@Jesse ~]# sort -n -t' ' -k 2 a.txt
    baidue 100 5010
    sohuee 100 4500
    google 110 5000
    gugeee 120 3000

    看如下演示,如果第二域相同,那么我们将从第三域进行升降处理
    [root@Jesse ~]# sort -n -t' ' -k 2 -k 3 a.txt
    sohuee 100 4500
    baidue 100 5010
    google 110 5000
    gugeee 120 3000

    如果我想让以空格为分割域的第三域进行倒叙排列
    [root@Jesse ~]# sort -n -t' ' -k 3r a.txt
    baidue 100 5010
    google 110 5000
    sohuee 100 4500
    gugeee 120 3000

    如果我想让以空格为分割域的第三域以正序进行排列
    [root@Jesse ~]# sort -t' ' -k 3n a.txt
    gugeee 120 3000
    sohuee 100 4500
    google 110 5000
    baidue 100 5010

    如果第二域有两个数相同,那么我们将以升降来排序
    [root@Jesse ~]# sort -t' ' -k 2n -k 3n a.txt
    sohuee 100 4500
    baidue 100 5010
    google 110 5000
    gugeee 120 3000

    如过只是想从第三个字母起进行排序
    [root@Jesse ~]# sort -t' ' -k 1.3 a.txt
    gugeee 120 3000
    sohuee 100 4500
    baidue 100 5010
    google 110 5000

    如果只想以第一域的第三个字符进行排序:-k 1.3,1.3 表示只以第三个字母进行排序
    [root@Jesse ~]# sort -t' ' -k 1.3,1.3 a.txt
    gugeee 120 3000
    sohuee 100 4500
    baidue 100 5010
    google 110 5000

    n表示进行排序,r表示逆序
    [root@Jesse ~]# sort -t" " -k 2nr a.txt
    gugeee 120 3000
    google 110 5000
    baidue 100 5010
    sohuee 100 4500

    以第二域进行排序,如果遇到重复的,就删除
    [root@Jesse ~]# sort -t" " -k 2n -u  a.txt
    baidue 100 5010
    google 110 5000
    gugeee 120 3000

  • 相关阅读:
    linux中使用nfs共享文件
    kNN处理iris数据集-使用交叉验证方法确定最优 k 值
    概念学习-候选消除算法
    OCaml相关
    vmare连接远程服务器的问题
    unresolved external symbol boost::throw_exception
    记录C/C++中遇到的一些小问题
    Linux下修改IP、DNS、路由命令行设置
    VS调试IDAPython脚本
    Linux下mysql5.7数据库root登录的问题
  • 原文地址:https://www.cnblogs.com/hanlong/p/5455272.html
Copyright © 2020-2023  润新知