关于sort的小结

近日有朋友问到sort常用的一些问题,虽然觉得很简单,但是还是简单的总结下:

1)-u:选项消除重复

[[email protected] ~]# cat seq.txt 
banana
apple
apple
pear
orange
orange
[[email protected] ~]# sort -u seq.txt 
apple
banana
orange
pear
如上:我们可以发现apple显示的只有一个了

2)-r:降序输出

[[email protected] ~]# cat number.txt 
1
2
3
4
5
[[email protected] ~]# sort -r number.txt 
5
4
3
2
1
如上:添加-r选项后,number.txt里面显示的内容的确是从高到低进行排序了

3)-o选项:导出

[[email protected] ~]# sort number.txt 
1
2
3
4
5
[[email protected] ~]# sort number.txt >number.txt 
[[email protected] ~]# cat number.txt 
[[email protected] ~]# echo $?
0
说明:发现输出的number.txt文件为空
[[email protected] ~]# cat number.txt 
[[email protected] ~]# cat<<EOF>number.txt
> 1
> 2
> 3
> 4
> 5
> EOF
[[email protected] ~]# cat number.txt 
1
2
3
4
5
[[email protected] ~]# sort -r number.txt -o number.bak
[[email protected] ~]# cat number.bak 
5
4
3
2
1
如上:使用-o选项后,可以很方便的进行保存

4)-n选项

说明:关于sort数字排序的困惑

a、“sort有时候会被我们认为抽风,比如说数字11居然比8小?”

b、出现这个现象并非偶然,可能是由于sort命令默认是按照字符来进行排序的,它会认为字符8在ASCII字符里是排在字符1后面,所以就将11排在8前面了

[[email protected] ~]# sort number.sort -u
1
10
11
19
2
21
3
4
43
44
5
8
使用-n选项,sort在输出的时候就会按照数值来排序了
[[email protected] ~]# sort -nu number.sort 
1
2
3
4
5
8
10
11
19
21
43
44

5)tk选项

说明: -t选项,表明指定间隔符

-k选项,指定我们需要针对那一列来排序

[[email protected] ~]# cat fruit.txt 
# 文件内容说明:
# 第一列表示水果类型
# 第二列表示水果数量
# 第三列表示水果价格
banana:30:5.5
apple:10:2.5
pear:90:2.3
orange:20:3.4
[[email protected] ~]# sort -n -k 2 -t : fruit.txt 
# 第二列表示水果数量
# 第三列表示水果价格
# 第一列表示水果类型
# 文件内容说明:
apple:10:2.5
orange:20:3.4
banana:30:5.5
pear:90:2.3
[[email protected] ~]# sort -n -k 3 -t : fruit.txt 
# 第二列表示水果数量
# 第三列表示水果价格
# 第一列表示水果类型
# 文件内容说明:
pear:90:2.3
apple:10:2.5
orange:20:3.4
banana:30:5.5

6)关于-k的详细解析

[[email protected] ~]# sort -t ` ` -k 1 facebook.txt 
sort: multi-character tab ‘-k‘
说明:有一些sort可能不能直接使用-t  "\t" 让tab作为分隔符,这个时候你可以转义tab,例如使用-t $‘\t‘ 这样就可以让tab成为分隔符了。
[[email protected] ~]# sort -t $‘\t‘ -k 1 facebook.txt 
baidu 100 5000
google 110 5000
sina 50 3000
sohu 100 4500
上面的输出信息可能是由于输入法的符号问题导致:
[[email protected] ~]# sort -t ‘ ‘ -k 1 facebook.txt 
baidu 100 5000
google 110 5000
sina 50 3000
sohu 100 4500
-k 2 -k 3(说明设定排序的优先级,先以第2列进行排序,如果相同,再以第3列进行排序)
[[email protected] ~]# sort -n -t ‘ ‘ -k 2 -k 3 facebook.txt 
sina 50 3000
sohu 100 4500
baidu 100 5000
google 110 5000

需求:让facebook.txt按照员工工资降序进行排序,对于员工工资相同的公司,则按照公司人数升序排序:

[[email protected] ~]# cat facebook.txt 
google 110 5000
baidu 100 5000
sina 50 3000
sohu 100 4500
[[email protected] ~]# sort -n -t ‘ ‘ -k 3r -k 2 facebook.txt 
baidu 100 5000
google 110 5000
sohu 100 4500
sina 50 3000

需求:按照月份进行排序(依照一月,二月,三月)

[[email protected] ~]# cat cal.txt 
January
February
June
May
[[email protected] ~]# sort -M cal.txt 
January
February
May
June

还有一些sort的功能,由于我没怎么用到,所以也就不额外介绍了

时间: 2024-07-30 13:44:32

关于sort的小结的相关文章

JavaScript数组sort()方法小结

sort语法:arrayObject.sort(sortby):参数sortby可选.规定排序顺序.必须是函数. 由于sort方法是先将数组元素转换为字符串进行比较,根据字符串首字符的ASCII码排序进行比较,所以有时候不能满足我们对数组数字集合的排序要求,但是sort()方法可以采用函数,利用冒泡法对数组进行排序,我个人的理解是如果要对其进行排序给定函数有以下两种格式: Array.sort(function(a,b){ a-b; }) 此种方法实现由小到大排序. Array.sort(fun

C语言qsort和C++sort的用法小结和区别比较

第一项: qsort: (只是些概念,了解一下就可以) 基本快速排序的方法,每次把数组分成两分和中间的一个划分值,而对于有多个重复值的数组来说,基本排序的效率较低.集成在C语言库函数里面的的qsort函数,使用 三 路划分的方法解决这个问题.所谓三路划分,是指把数组划分成小于划分值,等于划分值和大于划分值的三个部分. 函数对buf 指向的数据按升序排序. 使用方法: void qsort( void *base, size_t num, size_t width, int (__cdecl *c

js sort 二维数组排序的用法小结

最近在搞js 排序的问题,因为数据库排序太耗资源,如果能转移到客户端去排序,能大大D减少服务器内存消耗.客户端的话,除了js,就是as了,可惜我as学得太烂,所以只能选择js来研究研究了...经过我的测试,js内置方法sort的效率非常高 我们知道在js中默认提供了sort函数,但是这个函数默认是按照数组内容的ascii码升序进行排列的,如果我们要对二维数组排序要如何做呢?在php中是有multi_sort函数可供调用的,但是在js中似乎没有这种函数,但是没关系 ,因为js的sort函数其实也提

排序小结 sort

排序小结 排序算法是基础之基础.在这里小结一下.方便自己查阅和学习. 1.冒泡排序(BubbleSort) 思想:比较相邻的两个元素,如果前面的元素大于后面的元素,交换之. 思路:采用双层循环.外循环控制要处理多少趟.里面循环用来做元素的交换操作.注意上下界. 稳定性:稳定 时间复杂度:O(n2) void bubbleSort(int a[], int size) { int tmp; for (int i = 0; i < size; i++) { //每一趟都会把最大的元素放入最右边的位置

javascript 数组排序sort方法和自我实现排序方法的学习小结 by FungLeo

前言 针对一个数组进行排序,一个很常见的需求.尤其在后端.当然,前端也是有这个需求的. 当然,数组排序,是有现成的方法的.就是sort()方法. 我们先开看下这个. 标准答案,sort方法 var arr = [45,98,67,57,85,6,58,83,48,18]; console.log('原数组'); console.log(arr); console.log('sort方法从小到大排序'); console.log(arr.sort(function(a,b){return a-b}

python中sort和sorted函数小结

因为作者本人也是刚学python不久,在看python官方文档的时候看到了 Lambda 函数,其中使用sort函数的地方看的有些迷惑,所以就查找了一些关于sort和sorted函数的资料,在此整理到博客 L.sort(cmp=None, key=None, reverse=False) sorted(iterable, cmp=None, key=None, reverse=False) 这样看,sorted函数只比sort函数多一个iterable参数,其余没什么不同,iterable是一个

初学Java10:JavaScript小结(一)

JavaScript小结 1.JavaScript是什么?动态的,弱类型 (from W3School:http://www.w3school.com.cn/js/index.asp ) JavaScript 是属于网络的脚本语言! JavaScript 被数百万计的网页用来改进设计.验证表单.检测浏览器.创建cookies,以及更多的应用. JavaScript 是因特网上最流行的脚本语言. 2.实现:<script type="text/javascript"><

Lua的require和module小结

Lua的require和module小结  module特性是lua5.1中新增的,用于设置Lua文件自己的模块,最常用的方式是module(name,package.seeall),有时候lua文件名和module设置的名字不一样,到底require的时候该 require文件名还是require模块(module)名了,今天自己试了一把  首先,如果在lua文件中不显示的require,那么lua运行环境会默认加载哪些呢? 可以通过遍历package.loaded数组来查看,包括以下  st

leetcode笔记:Sort Colors

一. 题目描述 Given an array with n objects colored red, white or blue, sort them so that objects of the same color are adjacent, with the colors in the order red, white and blue. Here, we will use the integers 0, 1, and 2 to represent the color red, white