一、用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. CLR无法从COM 上下文*****转换为COM上下文*****,这种状态已持续60秒。

    异常信息:CLR无法从COM 上下文0x645e18 转换为COM上下文0x645f88,这种状态已持续60秒.拥有目标上下文/单元的线程很有可能执行的是非泵式等待或者在不发送 Windows 消息的 ...

  2. 一文梳理清楚mysql各种锁

    全局锁: 1.FTWRL(读锁) 用于做全库的逻辑备份 加锁:FLUSH TABLES WITH READ LOCK 解锁:unlock tables 表级锁: 1.表锁 表锁的读锁和写锁 加锁:lo ...

  3. ecshop调用商品原图的方法

    一.在列表页可以用{$goods.goods_thumb}   {$goods.goods_img}调用缩略图和商品图片 就是没有调用原图的下面是修改category.php 总sql语句处替换成下面 ...

  4. Sentry 监控 - Security Policy 安全策略报告

    系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentry-CLI - 30 秒上手 Source Maps Sentry For ...

  5. 哪5种IO模型?什么是select/poll/epoll?同步异步阻塞非阻塞有啥区别?全在这讲明白了!

    系统中有哪5种IO模型?什么是 select/poll/epoll?同步异步阻塞非阻塞有啥区别? 本文地址http://yangjianyong.cn/?p=84转载无需经过作者本人授权 先解开第一个 ...

  6. delete,drop,truncate 区别

    今天看到一篇关于delete.drop.truncate区别的文章,认为写得非常好,转过来. 打比方很形象. delete,drop,truncate 都有删除表的作用,区别在于: 1.delete ...

  7. Java学习之随堂笔记系列——day01

    学习方法:听.问.敲.悟听:前提:上课要听懂,没有听懂可以及时的问.问:任何的问题都要及时的问.敲:重点内容.多写多练,只有写和练习才能发现新的问题,有问题就问.悟:举一反三.提升自己.今日内容:1. ...

  8. 关于cgroup的几个核心名词及其关系

    子​​​系​​​统​​​(subsystem) 所谓子系统可以理解为操作系统里的各种资源(组件),如CPU,内存,磁盘,网卡(带宽) 层​​​级(Hierarchies) 所谓层级就是子系统的集合,又 ...

  9. salesforce零基础学习(一百零八)MFA

    本篇参考:https://security.salesforce.com/mfa https://sfdc.co/bvtuQT  (MFA官方研讨会的文档) https://sfdc.co/iwiQK ...

  10. java SE(未完结)

    数据类型与运算符 数据类型 基础数据类型 数值型 正整型 byte short int long 结尾加(l/L) 浮点型 float 结尾加(f/F) double 字符型 char 只能存储一个字 ...