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

  每个程序员,在职业生涯的某个时刻,总会发现自己需要知道一些Linux方面的知识。我并不是说你应该成为一个Linux专家,我的意思是,当面对Linux命令行任务时,你应该能很熟练的完成。事实上,学会了下面8个命令,我基本上能完成任何需要完成的任务。

  注意:下面的每个命令都有十分丰富的文档说明。这篇文章并不是来详尽的展示每个命令的各种功用的。我在这里要讲的是这几个常用的命令的常见用法。如果你对linux命令并不是很了解,你想找一些这方面的资料学习,那这篇文章将会给你一个基本的指导。

  让我们从处理一些数据开始。假设我们有两个文件,分别记录的订单清单和订单处理结果。

    order.out.log 
      8:22:19 111, 1, Patterns of Enterprise Architecture, Kindle edition, 39.99 
      8:23:45 112, 1, Joy of Clojure, Hardcover, 29.99 
      8:24:19 113, -1, Patterns of Enterprise Architecture, Kindle edition, 39.99 
      order.in.log 
      8:22:20 111, Order Complete 
      8:23:50 112, Order sent to fulfillment 
      8:24:20 113, Refund sent to processing

  cat

  cat – 连接文件,并输出结果

  cat 命令非常的简单,你从下面的例子可以看到。

    jfields$ cat order.out.log  
    8:22:19 111, 1, Patterns of Enterprise Architecture, Kindle edition, 39.99 
    8:23:45 112, 1, Joy of Clojure, Hardcover, 29.99 
    8:24:19 113, -1, Patterns of Enterprise Architecture, Kindle edition,

  像它的说明描述的,你可以用它来连接多个文件。

    jfields$ cat order.*  
    8:22:20 111, Order Complete 
    8:23:50 112, Order sent to fulfillment 
    8:24:20 113, Refund sent to processing 
    8:22:19 111, 1, Patterns of Enterprise Architecture, Kindle edition, 39.99 
    8:23:45 112, 1, Joy of Clojure, Hardcover, 29.99 
    8:24:19 113, -1, Patterns of Enterprise Architecture, Kindle edition,

  如果你想看这些log文件的内容,你可以把它们连接起来并输出到标准输出上,是上面的例子展示的。这很有用,但输出的内容可以更有逻辑些。

  sort

  sort – 文件里的文字按行排序

  此时sort命令显然是你佳的选择。

    jfields$ cat order.* | sort 
    8:22:19 111, 1, Patterns of Enterprise Architecture, Kindle edition, 39.99 
    8:22:20 111, Order Complete 
    8:23:45 112, 1, Joy of Clojure, Hardcover, 29.99 
    8:23:50 112, Order sent to fulfillment 
    8:24:19 113, -1, Patterns of Enterprise Architecture, Kindle edition, 39.99 
    8:24:20 113, Refund sent to processing

  像上面例子显示的,文件里的数据已经经过排序。对于一些小文件,你可以读取整个文件来处理它们,然而,真正的log文件通常有大量的内容,你不能不考虑这个情况。此时你应该考虑过滤出某些内容,把cat、sort后的内容通过管道传递给过滤工具。、