在sort命令上吃了不少亏,要好好补一课

sort命令是帮我们依据不同的数据类型进行排序,其语法及常用参数格式:

sort [-bcfMnrtk][源文件][-o 输出文件]

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

参  数:

-b   忽略每行前面开始出的空格字符。

-c   检查文件是否已经按照顺序排序。

-f   排序时,忽略大小写字母。

-M   将前面3个字母依照月份的缩写进行排序。

-n   依照数值的大小排序。

-o<输出文件>   将排序后的结果存入指定的文件。

-r   以相反的顺序来排序。

-t<分隔字符>   指定排序时所用的栏位分隔字符。

-k  选择以哪个区间进行排序。

1. 一直都没怎么把sort命令放在心上,除了ls -lt根据时间排序文件外,自认为排序的功能用得少。

但事实是,每次遇到问题了,只能一个一个去尝试——怎么还是没有排序输出我想要的结果呢?

比如前不久过滤日志中所有sql执行的时间,自己写出来的bash命令输出的就是按照默认的字典排序的,而不是数字排序。

现在想想才知道要用 -n -k1 这样的参数。但是情急之下却想不起来这些的。

2. 所以,今天好好补习下sort命令。防止以后掉入同样的问题之中。

3. 先看鸟哥的书:

a. sort 可以使用文字和数字排序,并且排序结果和字符和语系的编码有关,建议使用LANG=C来统一语系,对数字排序会好一些。

b. 参数:

-f 忽略字符的大小写

-b 忽略最前的空格, 以后不用非要去掉空格了

-M 以月份的名字来排序

-n 使用纯数字排序,默认则是使用文字排序

-r 反向排序

-u uniq,相同的数据仅出现一行在结果中

-t 分隔符,默认为tab

-k 使用哪个区间来排序

c. 看完参数后发现, -b,-n,-t,-k 都是最常用的,还有-u(只是最好知道重复次数)。这些参数以前没有用的时候,就必须处理输入的数据,比如一处空格或分隔符,只留一列,其实都不用了。比如现在写下面的就可以了:

sort -k1 -r -n -u sql_time.txt

d.  之前使用过 -g 的参数, 对比-n参数,二者说明为:

-g, --general-numeric-sort  compare according to general numerical value

-n, --numeric-sort          compare according to string numerical value

e. 看过上面的参数说明后,我想出来的一个语句的对比:

使用campid按照数字大小逆序输出,指定分隔符为-,使用分隔符后的id(-k2)作为排序列(如果是-k1那就自然没有效果啊!):

1956 $ redisc keys "camp-*"|sort -r -t"-" -k2 -n |head

camp-3491

camp-3200

camp-3199

camp-3198

camp-3197

不指定分隔符,那就只有一列,怎么排序都是文字排序的结果,加-k1,-k2没有意义了:

[root@mc-ssp@~@17:21:39]

1957 $ redisc keys "camp-*"|sort -r -n |head

camp-760c62

camp-760c44

camp-760c42

camp-760c37

f. 查看最近登录中所有ip的次数(使用grep过滤不含有ip的空白行,不规范行):

1981 $ last|awk '{print $3}'|sort -n|uniq -c

1984 $ last|awk '{print $3}'|grep -E '^[0-9].*'|sort|uniq -c

14 119.57.32.69

2 123.112.231.238

2 123.120.244.22

2 123.120.248.64

g. 查看/etc/passwd内容规律:

1995 $ cat /etc/passwd|awk -F ":" '{print $NF}'|sort|uniq -c

1

2 /bin/bash

14 /bin/false

1 /bin/sync

1 /sbin/nologin

17 /usr/sbin/nologin

4.鸟哥的书就讲了这么多,后面是结合uniq. 开始看博客:

-c  检查文件是否已经按照顺序排序。

-o 排序结果保存到指定文件

sort的-u选项,它的作用很简单,就是在输出行中去除重复行。

由于sort默认是把结果输出到标准输出,所以需要用重定向才能将结果写入文件,形如sort filename > newfile。

但是,如果你想把排序结果输出到原文件中,用重定向可就不行了。

就在这个时候,-o选项出现了,它成功的解决了这个问题,让你放心的将结果写入原文件。这或许也是-o比重定向的唯一优势所在。

sort -r number.txt -o number.txt

下面的例子让我想起excel,报表排序这些事情,还是挺常用的啊

[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

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

5. sort命令的参数都过了一遍了,以后应该会在实践中多举一反三啦。

cut -d: -f1 /etc/passwd|sort   字典排序输出所用用户名

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,902评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,037评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,978评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,867评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,763评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,104评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,565评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,236评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,379评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,313评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,363评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,034评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,637评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,719评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,952评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,371评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,948评论 2 341

推荐阅读更多精彩内容