1 sort的格式

sort [options] [files]

sort 参数  文件

2 参数 -t 用单个符char作为默认的字段分隔符, 默认字段分隔符是空白

参数-k 用来定义排序键值字段

一般是 -t分割好字段, 再在字段中

 

原始数据

t:说明原数据 按:分段

k1 说明指定字段1, 键值会从该字段的开始, 一直到字段结束而非字段的结尾。(也就是范围很大咯)

 排序1     这种排序没看出是做什么用的

sort -t: -k1 /etc/passwd

排序2  k用逗号修饰, 表示排序键值由第一个字段值的开始出开始, 结束于第二个字段的结尾位置

这里1,1  是说键值用第一个字段表示

sort -t: -k1, /etc/passwd

和上面的结果没差别,但理论上不同

排序3  指定键值为第三段,并按数字比较,然后倒叙

sort -t: -k3,3nr /etc/passwd

k的修饰符 n 表示按照数字(整数)比较

k的修改符 r 表示按照倒置排序

排序 4  先按字段4的整数排序, 再按字段3 的整数排序

通过写两个 -k 字段号,字段号n来实现

sort -t: -k4,4n -k3,3n /etc/passwd

比对这3组可以看出是先看第四字段排序了, 再按第三字段排

排序 5 只输出位置的排序记录,有点拗口, 就是比对的键值重复出现

sort -t: -k4,4n -u /etc/passwd

比如这个时候就没有两行都带7的了。

排序6 文本块排序

地址和清单, 多行文字当做一个数据块的文本块排序

使用awk  gsub配合RS变量(输入数据记录分隔符)  ORS变量(输出数据记录分隔符)处理

比如想按这三段来排序

awk -v RS="" '{gsub("\n", "^Z"); print}' do.txt 

RS=""把记录按空行隔开

gsub()函数, 能把"\n" 替换成 “^z” 这样输入的问题就被处理了, 接下来只要排序这三行, 最后还原被替换的数据就可以了。

awk -v RS="" '{gsub("\n", "^Z"); print}' do.txt | sort -f

用sort -f不区分字母大小的排序

awk -v RS="" '{gsub("\n", "^Z"); print}' do.txt | sort -f | awk -v ORS="\n\n" '{gsub("^Z", "\n"); print}'

在行和行之间加\n换回原来的格式

ORS=“\n\n” 保持用空白行分割输出记录, 如果只写一个"\n"  效果就作文一样的 ,一行一行没分割的效果。

冒泡 插入 快排少量数据时处理速度都还好,大数据时几乎是n^2

sort排序执行时间和记录的数量成正比, 有被优化调整, 可以省下学排序算法的时间。

稳定性:相同的记录输入顺序,是否在输出是也可以保持原状, sort这方面不稳定, 要加--statble弥补

7  sort的删除重复操作:

配合uniq  -c 计数唯一的, 显示重复的次数

sort do.txt |uniq -c

原始数据:

用uniq -c的

显示重复的字段

sort do.txt |uniq -d

-d的功能:只显示重复的数据

显示未重复的字段

sort do.txt |uniq -u

-u的功能:显示未重复的数据

shell脚本学习(7)sort的更多相关文章

  1. Shell脚本学习指南笔记

    Shell脚本学习指南 作者:Danbo 2015-8-3 脚本编程语言与编译型语言的差异 许多中型.大型的程序都是用编译型语言写的,例如:C.C+.Java等.这类程序只要从源代码(Source C ...

  2. 笔记——shell脚本学习指南

    <shell脚本学习指南>机械工业出版 ISBN 987-7-111-25504-8 第2章 2.4 初级陷阱 1.当今的系统,对#!这一行的长度限制从63到1024个字符都有,尽量不要超 ...

  3. Shell 脚本学习资料搜集

    Shell文档 ChinaUnix上大神“網中人”总结的Shell十三问,强烈推荐,这本书讲得比较精炼,而且都是一些Shell学习中容易把握不住的一些细节难点.每一问都写得非常精彩.ChinaUnix ...

  4. 学习笔记之Shell脚本学习指南 & sed与awk & 正则表达式

    正则表达式_百度百科 http://baike.baidu.com/link?url=ybgDrN2WQQKN64_gu-diCqdeDqL8LQ-jiQ-ftzzPaNUa9CmgBRDNnyx50 ...

  5. 转 shell脚本学习指南

    shell脚本学习指南 以下八点不敢说就能成为你shell脚本学习指南de全部,至少可以让你编写出可靠的shell脚本. 1. 指定bashshell 脚本的第一行,#!之后应该是什么?如果拿这个问题 ...

  6. Shell脚本学习 - 运算符

    继续shell脚本学习.上一篇是基本数据类型和语法的总结,这一篇是运算相关的操作. 运算符 bash不支持简单的数学计算,需要依赖其他命令实现. expr可以代为实现. # 表达式一般这么写 ` + ...

  7. shell脚本学习总结02--数组

    bash同时支持普通数组个关联数组,普通数组只能使用整数作为数组的索引,关联数组可以使用字符串作为数组的索引. 数组的定义方法: 在单行中使用一列值定义一个数组 [root@new ~]# array ...

  8. shell脚本学习之6小时搞定(1)

    shell脚本学习之6小时搞定(1) 简介 Shell是一种脚本语言,那么,就必须有解释器来执行这些脚本. Unix/Linux上常见的Shell脚本解释器有bash.sh.csh.ksh等,习惯上把 ...

  9. shell脚本学习(一)

    Shell脚本最常用于系统管理工作,或者用于结合现有的程序以完成小型.特定的工作. Shell的特点有: 1. 简单性 2. 可移植性 3. 开发容易 [什么是shell] 简单点理解,就是系统跟计算 ...

  10. shell脚本学习心得

    近来主要捣鼓ubuntu,大多数项目中都用到了sh脚本作为启动脚本等,以前只是大概明白如何使用,今天需要自己修改并运行脚本就碰到了很多问题,所以决定静下心来学习一下shell脚本,学习了几个小时,现将 ...

随机推荐

  1. docker 配置sonatype/nexus3

    docker search nexusdocker pull sonatype/nexus3mkdir -p /dockermaven/nexus-datachmod -R 777 /dockerma ...

  2. gcc -o hello hello.c 执行过程

    GCC编译器驱动程序读取源程序文件hello.c,并将它翻译成一个可执行目标文件hello.这个翻译的过程可分为四个阶段. 1.预处理阶段 预处理器(cpp)根据以字符#开头的命令,修改原始的c程序. ...

  3. Vagrant 手册之 Vagrantfile - SSH 设置 config.ssh

    原文地址 配置的命名空间:config.ssh config.ssh 中的设置与配置 Vagrant 如何通过 SSH 访问您的计算机相关. 大多数 Vagrant 设置一样,一般使用默认设置即可,但 ...

  4. HTML--JS 表单验证

    <html> <head> <title>验证表单</title> <script type="text/javascript" ...

  5. $_POST,$_GET,$_REQUEST区分

    PHP $_REQUEST PHP $_REQUEST 用于收集 HTML 表单提交的数据. 下面的例子展示了一个包含输入字段及提交按钮的表单.当用户通过点击提交按钮来提交表单数据时, 表单数据将发送 ...

  6. HTML/CSS点滴记录

    1. overflow 定义溢出元素内容区的内容会如何处理 visible 默认值.内容不会被修剪,会呈现在元素框之外. hidden 内容会被修剪,并且其余内容是不可见的. scroll 内容会被修 ...

  7. UI自动化处理文件上传

    UI自动化处理文件上传 import win32guiimport win32con def set_uploader(self, file_path): sleep(2) self.file_pat ...

  8. Go错误处理机制及自定义错误

    错误处理机制: 先看一段代码:看看输出什么? package mainimport "fmt" func test() { num1 := 10 num2 := 0 res := ...

  9. Tcp协议介绍

    前情提要:根据域名建立tcp链接之前要做两件事情,1 根据arp协议找到网管mac地址 2 通过dns服务器解析出域名的Ip地址,解析出域名的Ip地址之后就可以建立tcp链接了. tcp协议三个特点: ...

  10. Linux scp常用命令

    Linux scp命令用于Linux之间复制文件和目录. scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令. 1.从本地复制到远程 命令格式: ...