前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >sort 函数高级使用

sort 函数高级使用

作者头像
谢晓曦
发布2021-08-09 11:29:39
6050
发布2021-08-09 11:29:39
举报
文章被收录于专栏:程序猿秘籍程序猿秘籍

sort

  • -u: 删除后面的重复项
代码语言:javascript
复制
 [rocrocket@rocrocket programming]$ sort seq.txt
 apple
 banana
 orange
 pear
 pear
 [rocrocket@rocrocket programming]$ sort -u seq.txt
 apple
 banana
 orange
 pear
  • -r: 默认是升序, 可改为降序;
  • -o: 将排序后的结果写入原文件, 否则 默认是清空原文件的
代码语言:javascript
复制
 sort -r number.txt -o number.txt
  • -n: 按照数字排序, 否则 10 会比2 小 【默认是字典序】
  • -t: 指定分隔符
代码语言:javascript
复制
 [rocrocket@rocrocket programming]$ sort -n -k 2 -t : facebook.txt
 apple:10:2.5
 orange:20:3.4
 banana:30:5.5
 pear:90:2.3

1: 第三列降序排列; 若第三列相同,则第二列 升序排列。

代码语言:javascript
复制
 $ sort -n -t ' ' -k 3r -k 2 facebook.txt
 baidu 100 5000
 google 110 5000
 sohu 100 4500
 guge 50 3000

2: 从第一个域的 第二个字符 开始排序:

代码语言:javascript
复制
 $ sort -t  ' '  -k 1.2 facebook.txt
 baidu 100 5000
 sohu 100 4500
 google 110 5000
 guge 50 3000

3: 只根据第二个字符排序。

代码语言:javascript
复制
 $ sort -t ‘ ‘ -k 1.2,1.2 -k 3,3nr facebook.txt
 baidu 100 5000
 google 110 5000
 sohu 100 4500
 guge 50 3000

4: 注意: 跨域,只会比较第一个域

代码语言:javascript
复制
 $ sort -n -k 2.2,3.1 facebook.txt
guge 50 3000
baidu 100 5000
sohu 100 4500
google 110 5000

以第二个域的第二个字符开始到第三个域的第一个字符结束的部分进行排序。 第一行,会提取0 3,第二行提取00 5,第三行提取00 4,第四行提取10 5。 又因为sort认为0小于00小于000小于0000…. 因此0 3肯定是在第一个。10 5肯定是在最后一个。但为什么00 5却在00 4前面呢?(你可以自己做实验思考一下。) 答案揭晓:原来“跨域的设定是个假象”,sort只会比较第二个域的第二个字符到第二个域的最后一个字符的部分,而不会把第三个域的开头字符纳入比较范围。当发现00和00相同时,sort就会自动比较第一个域去了。当然baidu在sohu前面了。用一个范例即可证实:

代码语言:javascript
复制
 # 第二个域升序,(第三个域无效),
 # 第一个域的第一个字符 降序排列
 $ sort -n -k 2.2,3.1 -k 1,1r facebook.txt
 guge 50 3000
 sohu 100 4500
 baidu 100 5000
 google 110 5000

其它选项

-f会将小写字母都转换为大写字母来进行比较,亦即忽略大小写

-c会检查文件是否已排好序,如果乱序,则输出第一个乱序的行的相关信息,最后返回1

-C会检查文件是否已排好序,如果乱序,不输出内容,仅返回1

-M会以月份来排序,比如JAN小于FEB等等

-b会忽略每一行前面的所有空白部分,从第一个可见字符开始比较。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-07-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • sort
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档