• sort


    sort

    1. 用man sort 查看sort的帮助文档

    man sort

    2. sort常用选项有哪些,都有什么功能?提交相关使用的截图

    Linux sort 命令用于将文本文件内容加以排序。
    sort 可针对文本文件的内容,以行为单位来排序。

    语法

    sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][--help][--verison][文件][-k field1[,field2]]
    

    参数如下:

    • -b 忽略每行前面开始出的空格字符。
    • -c 检查文件是否已经按照顺序排序。
    • -d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。
    • -f 排序时,将小写字母视为大写字母。
    • -i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。
    • -m 将几个排序好的文件进行合并。
    • -M 将前面3个字母依照月份的缩写进行排序。
    • -n 依照数值的大小排序。
    • -u 意味着是唯一的(unique),输出的结果是去完重了的。
    • -o<输出文件> 将排序后的结果存入指定的文件。
    • -r 以相反的顺序来排序。
    • -t<分隔字符> 指定排序时所用的栏位分隔字符。
    • +<起始栏位>-<结束栏位> 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。
    • --help 显示帮助。
    • --version 显示版本信息。
    • [-k field1[,field2]] 按指定的列进行排序。

    相关使用截图

    1. sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。
      sort截图
    2. sort的-u选项
      sort-u
    3. sort的-n选项和-r选项
      number.txt
      sort-n
      sort-n-r
    4. sort的-o选项
      第一种,使用重定向写回number.txt文件,发现失效。

      第二种,使用sort的-o选项。
    5. sort的-t和-k选项
      facebook.txt这个文件有三列,列与列之间用冒号隔开了,第一列表示水果类型,第二列表示水果数量,第三列表示水果价格。
      facebook.txt
      下面我们按照第二列(即水果数量)进行排序,-k 2代表选择第2列,-t :表示以:为分隔符来划分列。
      sort -t -k

    3. 如果让你编写sort,你怎么实现?写出伪代码和相关的函数或系统调用的列进行排序。

    不太会编写sort,我认为就是先以字符形式按行读取文件,然后通过一个个读取的字符来判断当前字符是否为分隔符(,这里我们有个char型二维数组)。若为分隔符,将分隔符之前的内容装入一个char型数组,分隔符之后的内容装入接下来的char型数组。这是实现了-k和-t的功能。但是这也仅仅是将字符进行了分组,没办法继续进行排序了。
    这里我找到了Linux内核中sort的部分源码,可以作为参考:
    linux内核中的排序接口--sort函数

    参考链接:
    Linux下使用sort进行排序
    linux内核中的排序接口--sort函数

    ———————————————————————————————————————————————————————————————— 转载麻烦附上本文链接和本声明,感谢! 博主<叶家星>博客园链接如下:https://www.cnblogs.com/yejiaxing-01/
  • 相关阅读:
    ubuntu安装jdk的两种方法
    LeetCode 606. Construct String from Binary Tree (建立一个二叉树的string)
    LeetCode 617. Merge Two Binary Tree (合并两个二叉树)
    LeetCode 476. Number Complement (数的补数)
    LeetCode 575. Distribute Candies (发糖果)
    LeetCode 461. Hamming Distance (汉明距离)
    LeetCode 405. Convert a Number to Hexadecimal (把一个数转化为16进制)
    LeetCode 594. Longest Harmonious Subsequence (最长的协调子序列)
    LeetCode 371. Sum of Two Integers (两数之和)
    LeetCode 342. Power of Four (4的次方)
  • 原文地址:https://www.cnblogs.com/yejiaxing-01/p/15345093.html
Copyright © 2020-2023  润新知