# Linux中的管道命令(四)

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中的管道命令(四))