zoukankan      html  css  js  c++  java
  • sort命令与cat区别

    25.1 由于sort默认是把结果按照行排序后输出到标准输出,所以需要用重定向才能将结果写入文件,形如sort filename > newfile
    [root@shiyan a]# cat a.txt
    aaaaaa
    [root@shiyan a]# sort a.txt >c.txt ------------- 在重定向前会自动创建c.txt这个文件。
    [root@shiyan a]# cat c.txt
    aaaaaa

    25.2 sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。
    [rocrocket@rocrocket programming]$ cat seq.txt
    banana
    apple
    pear
    orange
    [rocrocket@rocrocket programming]$ sort seq.txt
    apple
    banana
    orange
    pear

    25.3 sort进行排序后就会将相同的行排到一起去,而 -u 参数就会将重复的行去掉,只保留一行
    [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 -------------------- 只保留一行

    25.4 sort的-r选项
    sort默认的排序方式是升序,如果想改成降序,就加个-r就搞定了。

    [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


    25.5 sort的-o选项,当重定向到自己时,一定要加-o参数,否则会被清空原文件。

    由于sort默认是把结果输出到标准输出,所以需要用重定向才能将结果写入文件,形如sort filename > newfile。
    但是,如果你想把排序结果输出到原文件中,用重定向可就不行了。

    [rocrocket@rocrocket programming]$ sort -r number.txt > number.txt
    [rocrocket@rocrocket programming]$ cat number.txt
    [rocrocket@rocrocket programming]$
    看,竟然将number清空了。!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    就在这个时候,-o选项出现了,它成功的解决了这个问题,让你放心的将结果写入原文件。这或许也是-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

    25.6, -n 参数。按照数值大小来排序而不是首字母的ASCII码
    由于sort是按照首字母的ascii码来排序的,所以当需要按照数字的大小来排序时会错乱
    [rocrocket@rocrocket programming]$ cat number.txt
    1
    10
    19
    11
    2
    5
    [rocrocket@rocrocket programming]$ sort number.txt
    1
    10
    11
    19
    2
    5
    [rocrocket@rocrocket programming]$ sort -n number.txt
    1
    2
    5
    10
    11
    19
    默认是采用升序的来显示的。当需要采用降序就用:sort -nr xxx.txt 来显示

    25.6,-k 截取每行的第几个部分
    facebook.txt按照公司人数排序 ,人数相同的按照员工平均工资升序排序(-k :域,区域,第几个区域):
    [root@FDMdevBI opt]# sort -n -t ' ' -k2 -k3 testsort.txt
    guge 50 3000
    sohu 100 4500
    baidu 100 5000
    google 110 5000

    25.7,配合 uniq -c 排序后统计相同的行的行数
    [root@bogon tmp]# sort aa |uniq -c
    1 111111111111111111
    1 11111111111111111111111
    1 222222222222222222
    1 22222222222222222222222
    1 444444444444444444
    1 444444444444444444444444444
    1 55555555555555555555555
    1 777777777777777777
    1 77777777777777777777777

    25.8,-u 去掉重复的行
    [root@bogon tmp]# cat b
    1
    2
    2
    2
    1
    1
    3
    31
    32
    42
    42
    62
    32
    2
    2
    1
    [root@bogon tmp]# sort b
    1
    1
    1
    1
    2
    2
    2
    2
    2
    3
    31
    32
    32
    42
    42
    62
    [root@bogon tmp]# sort -u b
    1
    2
    3
    31
    32
    42
    62
    [root@bogon tmp]# sort b |uniq -c
    4 1
    5 2
    1 3
    1 31
    2 32
    2 42
    1 62

    [root@bogon tmp]# sort b
    1
    1
    1
    1
    17
    2
    2
    2
    2
    2
    21
    3
    31
    32
    32
    42
    42
    62
    [root@bogon tmp]# sort -n b |uniq -c
    4 1
    5 2
    1 3
    1 17
    1 21
    1 31
    2 32
    2 42

  • 相关阅读:
    【LeetCode OJ】Remove Element
    【LeetCode OJ】Remove Duplicates from Sorted Array
    【LeetCode OJ】Swap Nodes in Pairs
    【LeetCode OJ】Merge Two Sorted Lists
    【LeetCode OJ】Remove Nth Node From End of List
    【LeetCode OJ】Two Sum
    【LeetCode OJ】Majority Element
    最长公共子序列问题
    php fopen与file_get_contents的区别
    PHP 技巧集合
  • 原文地址:https://www.cnblogs.com/kaishirenshi/p/8479788.html
Copyright © 2011-2022 走看看