美文网首页我爱编程程序员
# Linux中的管道命令(四)

# Linux中的管道命令(四)

作者: 学习编程王同学 | 来源:发表于2018-07-11 11:37 被阅读0次

    uniq

    uniq程序查找连续重复的行,一般用于有序数据的查重。

    下面是fruit文件的内容:

    $ cat fruit
    apple
    apple
    banana
    grape
    grape
    grape
    peach
    pear
    pear
    watermelon
    

    uniq程序在没有任何命令选项的情况下,对输入去除重复行后输出:

    $ uniq fruit
    apple
    banana
    grape
    peach
    pear
    watermelon
    

    它有几个常用的命令选项:

    • -c:去除重复行后输出,在每行前标明重复次数。
    • -u:仅输出不重复的行。
    • -d:仅输出重复行。

    下面是几个例子:

    $ uniq -c fruit # 在每行前标明重复次数
          2 apple
          1 banana
          3 grape
          1 peach
          2 pear
          1 watermelon
    $ uniq -d fruit # 仅输出重复行
    apple
    grape
    pear
    $ uniq -u fruit # 仅输出不重复行
    banana
    peach
    watermelon
    $ uniq -cd fruit # 仅输出重复行,并标明重复次数
          2 apple
          3 grape
          2 pear
    

    sort

    sort程序对文件内容按行进行排序。

    首先来看city文件的内容:

    $ cat city
    Chengdu
    Tsinan
    Ningpo
    Canton
    Tsinan
    Sining
    Sining
    Taipei
    Canton
    

    city文件是一个没有排序的文件,sort同学可以帮我们把它变成排序好的:

    $ sort city
    Canton
    Canton
    Chengdu
    Ningpo
    Sining
    Sining
    Taipei
    Tsinan
    Tsinan
    

    然而事实上并没有写入文件,使用-o选项指定输出文件:

    $ sort -o citysort city
    

    这条命令中sortcity文件中的内容排序后写入到citysort中。

    使用-f命令选项使sort忽略大小写差异。

    使用-c命令选项查看文件是否是排序好的:

    $ sort -c city
    sort: city:3: disorder: Ningpo
    

    sort告诉我们city文件从Ningpo开始是未排序的。

    -u选项使sort对文件内容进行排序,并去除重复行:

    $ sort -u city
    Canton
    Chengdu
    Ningpo
    Sining
    Taipei
    Tsinan
    

    还有一个很重要的选项,就是-r选项,它使sort反向排序:

    $ sort -ru city
    Tsinan
    Taipei
    Sining
    Ningpo
    Chengdu
    Canton
    

    相关:还有很多有用的过滤器,比如expand、fmt、join等等,您可以使用man查看使用说明。

    相关文章

      网友评论

        本文标题:# Linux中的管道命令(四)

        本文链接:https://www.haomeiwen.com/subject/lqqhpftx.html