1    sort命令的基本用法

sort命令有三种执行模式,分别为排序文本、检查文件是否已经排序以及合并文件

sort [option]...[file]...

file参数是要排序的文件列表,多个文件名之间用空格隔开。

如果不使用任何关键字(sort demo.txt),则sort会将整个文本行作为关键字进行排序,其排序规律是首先比较第一列,如果值相同则比较第二列,以此类推。

2    使用单个关键字排序

在某些情况下,用户可能不需要所有的列都参与排序,只需要根据其中的几个列进行比较,这种情况下可以使用-k选项来定义排序关键字,其基本语法如下:

-k pos1[,pos2]

pos1表示排序关键字的起始位置,pos2表示排序关键字的结束位置,这两者之间用逗号隔开。

sort -k 2,3 demo.txt  //使用两个列作为一个关键字来进行排序,程序首先会根据第2列进行排序,在第2列形同的情况下,再根据第3列排序。

sort命令中一个文本行只能包括10列

-k pos

表示从pos参数指定的列开始,一直到文本的结束都是排序关键字。sort在排序的时候会从pos指定的列开始,一直比较到行尾。

将列中的一个小子串作为排序关键字的组成部分:

-k pos1[.start][,pos2.[end]]

从pos1列的第start个字符开始,一直到第pos2列的第end个字符结束,都是排序关键字的组成部分。

列号和字符位置编号都从1开始,如果省略了start,则表示从第1个字符开始,如果省略了end,则表示到最后一个字符结束。

根据某个指定的列排序:

-k pos,pos

-k pos[.start],pos[.end]

3    根据关键字降序排列

-r选项是作为全局选项使用,其作用对象为sort命令中所有没有附件修饰符的列

修饰符r可以附加在组成关键字的列号后面,其作用域为所附加的列

sort -r -k 2,3 demo.txt等价于

sort -k 2,3r demo.txt等价于sort -k 2r,3r demo.txt等价于sort -k 2r,3 demo.txt

4    数值列的排序

在默认情况下,sort命令会将所有的列看做字符串,并且按照字符串的排序规则进行排序。为了使sort命令能够正确地处理数值字段,用户需要使用-n选项或者修饰符n。

sort -n -k 3,3 demo.txt等价

sort -k 3,3n demo.txt

修饰符可以多个使用:sort -k 3,3nr demo.txt

如果对非数值列使用-n选项或者修饰符,会导致不可预料的后果

5    自定义分隔符

在默认情况下,sort命令会将连续的空格或制表符作为列的分隔符,但是在实践中,可能会存在这其他分隔符,如冒号、逗号或者分号。

sort命令提供了一个-t选项,可以使得用户自己来指定自己需要的列分隔符

sort -t : -k 3n,3 /etc/password

6    删除重复的行

-u选项可以去掉重复的行

sort -u demo.txt

7    根据多个关键字排序

用户可以在sort命令中同时指定多个关键字,sort命令会根据各个关键字依次来排序

sort -k 3,3nr -k 4,4n demo.txt

定义的两个关键字都使用了修饰符,这些修饰符仅仅作用于所附加的关键字本身,并不影响其他的关键字。

sort -t : -n -k 5b,5 -k 3,3 /etc/passwrd

由于第一个关键字已经有了一个修饰符b,所以sort命令会认为第1个关键字不再需要修饰符,只将-n选项作用于第2个关键字-k 3,3

稳定排序:在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变

8    使用sort命令合并文件夹

使用sort命令可以很方便地合并多个文件,同时将文本文件的内容进行排序:

sort file1 file2

利用-u去掉重复的行

如果用户只想将两个文件合并,不想执行排序处理,可以使用sort -m 选项

shell编程——基本文本处理(三)之使用sort命令对文本进行排序相关推荐

  1. shell编程系列23--shell操作数据库实战之mysql命令参数详解

    shell编程系列23--shell操作数据库实战之mysql命令参数详解mysql命令参数详解-u 用户名-p 用户密码-h 服务器ip地址-D 连接的数据库-N 不输出列信息-B 使用tab键代替 ...

  2. shell 倒数第n列_【零基础学云计算】Shell编程之正则表达式(三)

    awk工具 在 Linux/UNIX 系统中,awk 是一个功能强大的编辑工具,逐行读取输入文本,并根据指定的匹配模式进行查找,对符合条件的内容进行格式化输出或者过滤处理,可以在无交互的情况下实现相当 ...

  3. Linux shell编程学习笔记---第三章

    3.1正则表达式基础 正则表达式的主要功能是文本查询和字符串操作.实际上就是字符串过滤. 正则表达式包括普通字符(a,b,1,2等)他们都只有字面意思和元字符(*,^等)他们超越了字面意思,被给予了附 ...

  4. shell编程之进阶篇三常见命令详解

    常见命令详解 接下来我们介绍一些shell脚本中经常使用的linux命令:grep.sed.awk.find grep命令详解 grep命令是我们常用的一个强大的文本搜索命令. 命令格式详解 grep ...

  5. 编程语言和shell编程的基础内容以及grep、egrep命令及相应的正则表达式和用法...

    bash的特性之多命令执行的逻辑关系: 1.命令替换 COMMAND1 $(COMMAND2) 2.管道 COMMAND1 | COMMAND2 | COMMAND3 ... 3.顺序执行结构 COM ...

  6. 高级shell编程笔记(第十三章 系统与管理命令)

    第十三章 系统与管理命令 在/etc/rc.d 目录中的启动和关机脚本中包含了好多有用的(和没用的)这些系统管理命令.这些命令通常总是被 root 用户使用,用与系统维护或者是紧急文件系统修复.一定要 ...

  7. Shell编程——退出状态(if语句判断某个命令的退出状态)

    以下内容源于C语言中文网的学习与整理,如有侵权,请告知删除. 一.退出状态 (1)不管是 Bash 内置命令,还是外部的 Linux 命令,还是自定义的 Shell 函数,当它运行结束或者退出时,都会 ...

  8. Shell脚本编程基础 三 使用结构化命令

    结构化命令允许我们改变程序执行的顺序,在某些条件下执行一些命令而在其他条件下跳过另一些命令. (1)使用if-then语句 结构化命令中,最基本的类型就是if-then语句,其格式如下: if com ...

  9. gnu linux额外支持的运算符,《Shell编程从入门到精通》张昊-chap1-8

    缘起 20190314开始复习及学习吧: 张昊编著: 内容 目录 i(9/314) 全书11章 chap1 第1个Shell程序 1(13/334) 1.1.第一道菜 [echo.sh] #!/bin ...

最新文章

  1. PTA数据结构与算法题目集(中文)7-14
  2. 如何查看一个jar文件是用什么版本jdk编译的?
  3. 【Python基础】字符编码ASCII-GBK-Unicode-UTF-8之间的关系
  4. ML之GB:GB算法相关论文、相关思路、关键步骤、代码实现、配图集合、案例应用之详细攻略
  5. git commit或者pull代码时提示代码冲突解决方法
  6. html4基础,HTML 基础 4
  7. 骆俊武:五年了,我的技术管理成长之路
  8. idea拦截了html中的静态资源,IDEA配置静态资源热加载操作(Springboot修改静态资源不重启)...
  9. 雷林鹏分享:jQuery EasyUI 菜单与按钮 - 创建链接按钮
  10. OpenJDK8:只有x86和sparcv9才能出32位的版本
  11. w10 桌面计算机垃圾桶,win10垃圾桶图标不见了怎么办
  12. 《骆昊-Java面试题全集(中)》学习笔记_2018_12_17
  13. 【跨年烟花代码】用C语言来写“烟花”,快拿去给心中的那个人看
  14. mapboxgl 互联网地图纠偏插件(一)
  15. .ps是什么格式_用Word修图,真的比PS简单十倍不止!可惜知道的人太少了......
  16. perl和bugzilla
  17. SH-SSS丨《ISSD: 基于迭代式语音分离的说话人日志系统》论文线上分享
  18. 三维视觉之结构光原理详解
  19. Python多线程编程之线程子类化
  20. 关于企业价值观的一点点感悟

热门文章

  1. matlab 处理眼动仪数据总结(一) :数据读取
  2. 2022年印度电商市场现状与发展前景
  3. 牛顿迭代法求一个数的立方根、平方根
  4. c语言实现按键的抖动与消除,8051单片机实验2——按键识别(一)
  5. Go学习:切片slice的循环机制及性能
  6. MSDE环境重置用友SA密码
  7. CTF 维吉利亚密码shanghai
  8. python sqlalchemy中文
  9. U盘linux自动安装系统,U盘自动安装系统:
  10. zynq PS侧DMA驱动