Linux sort命令用于将文本文件内容加以排序。

sort可针对文本文件的内容,以行为单位来排序。

参数如下:

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

1.sort直接用就可以对文件进行排序

准备测试文件
[root@www ~]$ cat sorttest.txt
hello
java
php
world
betty
php [root@www ~]$ sort sorttest.txt
betty
hello
java
php
php
world

2.sort -u的选项是去重,在输出行中去除重复行

[root@www ~]$ sort -u sorttest.txt
betty
hello
java
php
world

3.sort -n 选项是按照数值大小排序,这样就不会出现10出现在2之前了

准备个文件
[root@www ~]$ cat num.txt 如果直接排序,结果如下
[root@www ~]$ sort num.txt 要想按照数值大小排序,需要加-n选项
[root@www ~]$ sort -n num.txt

4.sort -o 选项把结果输出到指定文件中,用重定向命令也是可以的

[root@www ~]$ sort -n -o test num.txt
[root@www ~]$ cat test 或者直接如下
[root@www ~]$ sort -n num.txt > test
[root@www ~]$ cat test

5.sort的-t选项指定分隔符

这个文件有三列,列与列之间用“-”隔开了,第一列表示年,第二列表示月,第三列表示日。那么我想以月来排序,也就是以第二列来排序,如何利用sort实现?幸好,sort提供了-t选项,后面可以设定间隔符。指定了间隔符之后,就可以用-k来指定列数了。

准备文件
[root@www ~]$ cat date
--
--
--
-- 如果直接排序的话,结果如下
[root@www ~]$ sort date
--
--
--
-- 如果以第二列月份排序的话,如下
[root@www ~]$ sort -n -k2 -t'-' date
--
--
--
--

6.sort -k选项是指定以哪一列来排序

准备测试文件如下
[root@www ~]$ cat company
facebook
alibaba
tengxun
baidu
google 如果直接排序,是以第一列的字母排序
[root@www ~]$ sort company
alibaba
baidu
facebook
google
tengxun 第一列排序还可以指定第一列
[root@www ~]$ sort -k1 company
alibaba
baidu
facebook
google
tengxun
[root@www ~]$ sort -k1 -t' ' company
alibaba
baidu
facebook
google
tengxun 如果以第二列数值大小排序
[root@www ~]$ sort -k2n -t' ' company
facebook
tengxun
alibaba
baidu
google

改下文件,如果第二列相同,按第三列大小排序,如何操作?

[root@www ~]$ cat company
facebook
alibaba
tengxun
baidu
google [root@www ~]$ sort -k2n -t' ' -k3n company
alibaba
facebook
tengxun
baidu
google

如果第二列相同,第三列降序排序,如何操作呢?

[root@www ~]$ sort -k2n -t' ' -k3nr company
facebook
alibaba
tengxun
baidu
google

如果-k 和 -u 联合使用,有什么效果呢?

[root@www ~]$ sort -n -k2 company
alibaba
facebook
tengxun
baidu
google [root@www ~]$ sort -n -k2 -u company
facebook
tengxun
baidu
google

发现第二列相同的alibaba删除掉了

7.sort -M选项,按月份的前三个缩写字母来排序

[root@www ~]$ cat month
DEC
JAN
NOV
AUG
MAY [root@www ~]$ sort -M month
JAN
MAY
AUG
NOV
DEC

8.sort -r选项是逆序排列

[root@www ~]$ cat sorttest.txt
hello
java
php
world
betty
php [root@www ~]$ sort -r sorttest.txt
world
php
php
java
hello
betty

shell学习(5)- sort的更多相关文章

  1. Shell学习(七)——sort、uniq、cut、wc命令详解

    Shell学习(七)--sort.uniq.cut.wc命令详解 转自:[1]linux sort,uniq,cut,wc命令详解 https://www.cnblogs.com/ggjucheng/ ...

  2. shell学习笔记

    shell学习笔记 .查看/etc/shells,看看有几个可用的Shell . 曾经用过的命令存在.bash_history中,但是~/.bash_history记录的是前一次登录前记录的所有指令, ...

  3. Shell学习之Shell特性(一)

    Shell学习之Shell特性 目录 命令和文件自动补齐功能 命令历史记忆功能 history.上下键.!number.!string.!$.!! 别名功能 alias.unalias cp.~use ...

  4. Shell 学习—AWK介绍

    Shell 学习—AWK = = = 安装awk root@kiki-desktop:~/shell# apt-get install gawk gawk-doc = = = awk 是一种程序语言. ...

  5. shell学习总结之自定义函数

    shell学习总结之自定义函数 Myfun (){ echo -n "now i is $i " ! [ "$i" ] && exit ; ec ...

  6. SHELL学习笔记----IF条件判断,判断条件

    SHELL学习笔记----IF条件判断,判断条件 前言: 无论什么编程语言都离不开条件判断.SHELL也不例外.  if list then           do something here   ...

  7. shell学习指南-阅读笔记

    shell学习指南真不是刚开始学习shell应该看得书,虽然其中讲了简单的linux命令,shell语法等,但是每章也有些深入和生僻地方,我想如果我刚学shell看到这样的地方一定会头疼的要死.或许也 ...

  8. 【转】shell学习笔记(一)——学习目的性、特殊字符、运算符等

    1 学习shell的目的性 写之前我们先来搞清楚为什么要学shell,学习要有目的性 shell简单.灵活.高效,特别适合处理一些系统管理方面的小问题 shell可以实现自动化管理,让系统管理员的工作 ...

  9. Shell学习之结合正则表达式与通配符的使用(五)

    Shell学习之结合正则表达式与通配符的使用 目录 通配符 正则表达式与通配符 通配符 通配符的使用 正则表达式 正则表达式 正则表达式的使用 通配符 正则表达式与通配符 正则表达式用来在文件中匹配符 ...

  10. Shell学习之条件测试(四)

    Shell学习之条件测试 目录 逻辑测试 文件测试 数值比较 字符串比较 逻辑测试 格式: [ 表达式 ] 操作符 [ 表达式2 ] …… 命令1 操作符 命令2 …… 常用的操作符 ( 注意:-a和 ...

随机推荐

  1. [数据挖掘课程笔记]关联规则挖掘 - Apriori算法

    两种度量: 支持度(support)  support(A→B) = count(AUB)/N (N是数据库中记录的条数) 自信度(confidence)confidence(A→B) = count ...

  2. cc、gcc、g++区别

    gcc是C编译器:g++是C++编译器:linux下cc一般是一个符号连接,指向gcc:gcc和g++都是GUN(组织)的编译器.而CC则一般是makefile里面的一个名字,即宏定义,嘿,因为Lin ...

  3. curl上传图片(同域上传)

    先研究完curl同域上传图片然后再研究curl跨域上传,先把同域上传代码总结如下: index.php <?php //图片上传 $url = "http://192.168.1.23 ...

  4. html video api控件总结

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. jmeter使用笔记——脚本录制,JMeter使用plugins插件进行服务器性能监控

    脚本录制: 1.badboy录制 2.代理服务器录制 ①工作台添加HTTP代理服务器 ②设置目标控制器,分组,排除模式,包含模式(使用正则表达式筛选) ③设置浏览器,手动设置代理服务器,localho ...

  6. 电脑设备对于IT人员,犹如武器对于士兵

    本人做了多年Softwarer,写些感受. 比我们早的老一代程序员更是用自己的健康总结了一些经验. 先说关于健康方面: 程序员要长期坐着,这对健康损害很大,颈椎腰椎,心肺能力都会衰减.以前只是听说,自 ...

  7. MYSQL进阶学习笔记十四:MySQL 应用程序优化!(视频序号:进阶_32)

    知识点十五:MySQL 的应用程序优化(32) 一.访问数据库采用连接池 把连接当做对象或设备,统一放在‘连接池’里.凡是需要访问数据库的地方都从连接池里取连接 二.采用缓存减少对于MySQL的访问: ...

  8. html5--5-11 绘制文字

    html5--5-11 绘制文字 学习要点 掌握文字的绘制方法 文字的绘制方法 strokeText("文字",x,y,maxWith) 绘制(描边)空心文字 fillText(& ...

  9. Springboot框架中request.getInputStream()获取不到上传的文件流

    Springboot框架中用下面的代码,使用request.getInputStream()获取不到上传的文件流 @PostMapping("/upload_img") publi ...

  10. css中块元素和行内元素区别

    行内元素特点 1.和其他元素都在一行上: 2.元素的高度.宽度.行高及顶部和底部边距不可设置: 3.元素的宽度就是它包含的文字或图片的宽度,不可改变. 块元素特点 1.每个块级元素都从新的一行开始,并 ...