Linux 基础教程 17-基本命令sort和uniq

sort

  在计算机中通常会存储很多各种各样的文件,里面甚至会有大量的数据记录,如果这些数据能以某种顺序进行排列,那么在日后的数据维护和查找将会变得非常容易。在Windows操作系统中可进行排序的工具有很多,如MS Excel/SQL Server等,而在Linux中常用的排序命令非sort莫属。sort命令将输入文件当成是由多条记录组成的数据流,可变宽度的字段组成并以换行符做定界符。

基本语法

sort [参数] [要排序的文件]

主要参数如下所示:

参数 功能
-c 检查文件是否已经按照顺序排序
-k 指定排序的域
-m 合并已排序的文件
-n 按数字大小进行排序
-o [输出文件] 将排序后的文件输出到指定文件,相当于输出重定向到指定文件
-r 将排序结果以逆向显示
-t [分隔符] 指定排序时所用的分隔符,默认为空格符
-u 去掉结果中的重复项

sort示例

  • 1、-t参数
      sort命令对文件排序是分域的。默认的域分隔符是空格符,而-t参数可以指定排序所用的分隔符(相当于根据指定的分隔符先进行分列,再根据默认域排序)。示例如下所示:

    17-1 sort-t参数示例_c2i.jpg

  • 2、-k参数
      sort命令默认情况下是按第1个域进行排序的。如果不想按照默认的域进行排序,该怎么办?sort命令提供了一个参数 -k ,该参数可以按指定的域进行排序。sort命令以数字 1 代表第1域,2代表第2域,依次类推。下面的示例将演示按第3域进行排序,如下所示:

    17-2 sort-k参数_c2i.jpg

从上面的示例中,可以看到尽管我们想按照域2数字大小进行排序,而实际情况仍然是按字符来进行排序的。解决方案请看下面的-n参数。

  • 3、-n参数
      在一些情况下,我们需要按照数字大小来进行排序,而sort默认是按字符串进行排序。针对这种情况,我们可以使用参数 -n来达到目的。
    17-3 sort-n参数_c2i.jpg

-n参数一般不会单独使用,通常与参数-k结合使用,放在域号之后。如-k2n就表示指定以第2个域且按数字大小进行排序。

  • 4、-r参数
      通常情况我们排序都是按正向排序,如数字通常是从小到大排序。但有些情况,我们如果需要逆向排序,如数字从大到小排序,这时候就需要使用参数-r。示例如下所示:

    17-4 sort-r参数_c2i.jpg

  • 5、-u参数
      -u参数通常用于去掉排序结果中的重复项。如在文件添加几行重复项,再使用-u参数进行排序,详细示例如下所示:

    17-5 sort-u参数_c2i.jpg

  • 6、-o参数
      默认情况下,sort对排序后的内容是直接输出到标准输出中。对于仅仅查看而言没有太大影响。但如果想要保存排序后的结果怎么办?这时候就该参数-o上场了。详细示例如下所示:

    17-6 sort-o参数_c2i.jpg

通过该示例,其实我们可以总结出-o参数与Shell中的I/O重定向功能一样。

  • 7、-c参数
      参数-c使用比较简单,主要用来检查文件是否已经排过序。

    17-7 sort-c参数_c2i.jpg

  • 8、-m参数
      参数-m主要用来将已经过排序的文件进行合并。注意,在文件合并前,如果没有排序,虽然也可合并,但意义不大。

    17-8 sort-m参数_c2i.jpg

注意排序前和排序后合并的区别

uniq

  uniq命令用于去掉文件中的重复项,一般与sort命令结合使用,作用类似于sort -u,但也有一些区别。

基本语法

uniq [参数] [输入文件] [输出文件]

主要参数如下所示:

参数 功能
-c 输出每行在文件中重复的次数
-d 仅输出重复出现的记录,每个重复记录仅出现一次(连续重复时)
-u 仅显示没有重复的记录

-d和-u作用刚好相反

sort -u与uniq区别

  在了解基本的语法和参数之后,我们先来看看两者的区别,示例如下所示:


17-9 uniq与sort-u区别_c2i.jpg

从上面的示例可以总结出两者的主要区别如下:

  • uniq:去掉的重复行必须是连续重复出现的行,中间不能出现其他文本行
  • sort -u:将去掉所有重复的行

uniq示例

  • 1、-c参数
    17-10 uniq-c参数_c2i.jpg

如上图所示,前面第一列列出每次重复的次数,而且是连续的行重复次数,如果是分开重复的话,将再做一次统计。

  • 2、-d参数
    17-11 uniq-d参数_c2i.jpg

从上图示例可以看出,-d参数将存在连续重复的数据显示出来了,而John+21+Male+Russia虽然也存在重复,但却不是连续,因此未进行显示。

  • 3、-u参数
    17-12 uniq-u参数_c2i.jpg

-u是将没有重复的数据显示出来,但为什么显示最后两行依然是重复了,请大家思考一下为什么?

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

推荐阅读更多精彩内容