uniq

  uniq – 删除重复的行

  下面的例子展示了如何过滤出跟书相关的交易,删除不需要的信息,获得一个不重复的信息。

    jfields$ cat order.out.log | grep "(Kindle|Hardcover)" | cut -d"," -f3 | sort | uniq -c 
       1  Joy of Clojure 
       2  Patterns of Enterprise Architecture

  看起来这是一个很简单的任务。

  这都是很好用的命令,但前提是你要能找到你想要的文件。有时候你会发现一些文件藏在很深的文件夹里,你根本不知道它们在哪。但如果你是知道你要寻找的文件的名字的话,这对你不是个问题了。

  find

  find – 在文件目录中搜索文件

  在上面的例子中我们处理了order.in.log和order.out.log这两个文件。这两个文件放在我的home目录里的。下面了例子将向大家展示如何在一个很深的目录结构里找到这样的文件。

    jfields$ find /Users -name "order*" 
    Users/jfields/order.in.log 
    Users/jfields/order.out.log

  find命令有很多其它的参数,但99%的时间里我只需要这一个够了。

  简单的一行,你能找到你想要的文件,然后你可以用cat查看它,用cut修剪它。但文件很小时,你用管道把它们输出到屏幕上是可以的,但当文件大到超出屏幕时,你也许应该用管道把它们输出给less命令。

  less

  less – 在文件里向前或向后移动

  让我们再回到简单的 cat | sort 例子中来,下面的命令是将经过合并、排序后的内容输出到less命令里。在 less 命令,使用“/”来执行向前搜索,使用“?”命令执行向后搜索。搜索条件是一个正则表达式。

jfields$ cat order* | sort | less

  如果你在 less 命令里使用 /113.*,所有113订单的信息都会高亮。你也可以试试?.*112,所有跟订单112相关的时间戳都会高亮。后你可以用 ‘q’ 来退出less命令。

  Linux里有很丰富的各种命令,有些是很难用的。然而,学会了前面说的这8个命令,你已经能处理大量的log分析任务了,完全不需要用脚本语言写程序来处理它们。