一、用man sort 查看sort的帮助文档

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

[rocrocket@rocrocket programming]$ cat seq.txt

banana

apple

pear

orange

[rocrocket@rocrocket programming]$ sort seq.txt

apple

banana

orange

pear

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

选项:

-b:忽略前面空格。

-c:测试文件是否已经排序。

-d:根据字典顺序排序,仅比较数字 字母 空格等字符。

-f:忽略大小写。

-i:仅比较可打印字符。

-n:纯数字排列

-R:根据哈希值随机排序。

-r:反向,颠倒顺序。

-k:定义排序关键字。原来的:第几个区间,与t相辅。

-t:分隔符

-m:仅仅合并已经排序好的文件,不执行排序操作。

-s:稳定的排序算法。

-o:排序结果写入文件,而不是标准输出到设备。

-u:相同的行只留一行

-M:月份

使用截图:

源文件:



Sort -b test1.txt:忽略前面空格

我们可以看见空格的影响消失了。

Sort -r test1.txt:反向,颠倒顺序

Sort -n test1.txt :纯数字排序

Sort -u test1.txt:相同的行只留一行

我们可以看见,相同的只剩一个。

空格也算作字符。

4 sort的-o选项

由于sort默认是把结果输出到标准输出,所以需要用重定向才能将结果写入文件,形如sort filename > newfile。

但是,如果你想把排序结果输出到原文件中,用重定向可就不行了。

Sort -r filename -o newfilename

sort -r test1.txt -o t.txt

我们查看t.txt文件:

Sort --help:查看帮助文档

一、如果让你编写sort,你怎么实现?写出伪代码和相关的函数或系统调用

我的sort实现过程:

1、打开文件(fopen指令),通过一个指针char *file打开指向的文件,打开成功则指向该文件的指针返回,失败则返回NULL。

fopen(filename/url,mode) 这两个参数是必选的,第一个文件名/url,第二个打开的方式

$handle = fopen($filename,'r');

打开方式常用的有以下几种:

r - 只读方式打开,将文件指针指向文件头

r+ - 读写方式打开,将文件指针指向文件头

w - 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之

w+ -读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之

a -写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之

a+ -读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之

2、读取文件:使用fread函数

fread函数可从文件中读取二进制数据

语法:

A = fread(fid, count)

A = fread(fid, count, precision)

其中fid为指针所指文件中的当前位置,count指读取的数据个数, precision表示以什么格式的数据类型读取数据。

3、调用sort函数进行排序

I)Sort函数有三个参数:

(1)第一个是要排序的数组的起始地址。

(2)第二个是结束的地址(最后一位要排序的地址)

(3)第三个参数是排序的方法,可以是从大到小也可是从小到大,还可以不写第三个参数,此时默认的排序方法是从小到大排序。

4、将排序后的新数据重定向写入文件中(write),可以写入新文件也可以覆盖原文件。

5、关闭文件:fclose

fclose()用来关闭fopen()打开的文件,此动作会让缓冲区内的数据写入文件中,并释放系统所提供的文件资源。

【返回值】若关文件动作成功则返回0,有错误发生时则返回EOF,并把错误代码存到errno。

sort命令的学习与实践的更多相关文章

  1. linux sort命令学习

    linux sort命令以行为单位对文本文件进行排序. 接下来我们会以/tmp/sort_test.txt这个文本文件为例对sort命令的用法进行说明. sh-# cat /tmp/sort_test ...

  2. redis入门指南(三)—— 事务、过期时间、SORT命令、消息通知与管道

    写在前面 学习<redis入门指南>笔记,结合实践,只记录重要,明确,属于新知的相关内容. 事务 1.redis中的事务由一组命令的集合组成,要么都执行,要么都不执行,同时redis的事务 ...

  3. shell之sort命令

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

  4. 【转】linux sort 命令详解

    sort是在Linux里非常常用的一个命令,管排序的,集中精力,五分钟搞定sort,现在开始! 1 sort的工作原理 sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按AS ...

  5. 3. sort命令

    转自:http://www.cnblogs.com/51linux/archive/2012/05/23/2515299.html sort是在Linux里非常常用的一个命令,管排序的,集中精力,五分 ...

  6. linux sort 命令详解

    sort是在Linux里非常常用的一个命令,管排序的,集中精力,五分钟搞定sort,现在开始! 1 sort的工作原理 sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按AS ...

  7. hadoop2.5.2学习及实践笔记(二)—— 编译源代码及导入源码至eclipse

    生产环境中hadoop一般会选择64位版本,官方下载的hadoop安装包中的native库是32位的,因此运行64位版本时,需要自己编译64位的native库,并替换掉自带native库. 源码包下的 ...

  8. linux sort 命令详解(转 )

    linux sort 命令详解 sort是在Linux里非常常用的一个命令,管排序的,集中精力,五分钟搞定sort,现在开始! 1 sort的工作原理 sort将文件的每一行作为一个单位,相互比较,比 ...

  9. 【转】linux中的sort命令

    转自:http://www.cnblogs.com/51linux/archive/2012/05/23/2515299.html sort是在Linux里非常常用的一个命令,管排序的,集中精力,五分 ...

随机推荐

  1. 洛谷P1125——笨小猴(简易模拟)

    https://www.luogu.org/problem/show?pid=1125 题目描述 笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼.但是他找到了一种方法,经试验证明,用这种方法去 ...

  2. Android通过WebView实现新闻界面的加载

    原文链接:Android实现WebView加载网页及网页美化(简易新闻 四)_Tobey_r1的博客-CSDN博客 效果展示: 我是按照原文作者的步骤一步步来的,中间没有遇到什么问题.主要是界面中有很 ...

  3. Shell系列(11)- 位置参数变量(4)

    作用 往shell脚本里面传递参数 位置参数变量 作用 $n n 为数字,$0 代表命令本身,$1-$9 代表第一到第九个参数,十以上的参数需要用大括号包含,如 ${10} $* 这个变量代表命令行中 ...

  4. vue实现事件代理(通过事件冒泡实现)

    事件代理/事件委托以ul>li来模拟 使用冒泡的用法:使用冒泡的用法来实现事件代理 分离出来 动态根据索引添加类名:

  5. centos7安装部署SVN

      SVN介绍 SVN是个自由.开源的版本控制系统,绝大多数开源软件都使用SVN作为代码版本管理软件. SVN的官方网站http://subversion.apache.org/.目前SVN在开源社区 ...

  6. css布局宽度自适应

    随着各种终端的不断涌现,网页中的元素适应不同的分辨率变得特别重要,根据经验,涉及到宽度自适应的一共有四种情况: 左端固定,右边自适应:右端固定,左边自适应:两端固定,中间自适应:中间固定,两端自适应. ...

  7. 大型项目源码集合「GitHub 热点速览 v.21.39」

    作者:HelloGitHub-小鱼干 代码,尤其是优雅规范的代码,一直都是学习编程技巧的捷径.虽然有实用的代码小片段,能拯救当前业务的燃眉之急,但是真要去提升自己的技能还是得从大型的项目,尤其是有一定 ...

  8. 鸿蒙内核源码分析(调度故事篇) | 用故事说内核调度 | 百篇博客分析OpenHarmony源码 | v9.07

    百篇博客系列篇.本篇为: v09.xx 鸿蒙内核源码分析(调度故事篇) | 用故事说内核调度过程 | 51.c.h .o 前因后果相关篇为: v08.xx 鸿蒙内核源码分析(总目录) | 百万汉字注解 ...

  9. 鸿蒙内核源码分析(调度队列篇) | 内核有多少个调度队列 | 百篇博客分析OpenHarmony源码 | v6.05

    百篇博客系列篇.本篇为: v06.xx 鸿蒙内核源码分析(调度队列篇) | 内核有多少个调度队列 | 51.c.h .o 任务管理相关篇为: v03.xx 鸿蒙内核源码分析(时钟任务篇) | 触发调度 ...

  10. mac使用brew update无反应,更新慢解决办法

    一.原因 主要是资源访问太慢的原因造成的,替换一下镜像就可以了 有点耐心,大概5分钟就可以了,刚开始的时候terminal 只有顶部的title栏会变化,最后才会出现更新结果 使用中科大的镜像 替换默 ...