6. 8:23:45 112, 1, Joy of Clojure, Hardcover, 29.99
7. 8:24:19 113, -1, Patterns of Enterprise Architecture, K
indle edition, 39.99
如果你想看这些 log 文件的内容,你可以把它们连接起来并输出到标准输出
上,就是上面的例子展示的。这很有用,但输出的内容可以更有逻辑些。
sort
此时 sort 命令显然是你最佳的选择。
1. jfields$ cat order.* | sort
2. 8:22:19 111, 1, Patterns of Enterprise Architecture, Ki
ndle edition, 39.99
3. 8:22:20 111, Order Complete
4. 8:23:45 112, 1, Joy of Clojure, Hardcover, 29.99
5. 8:23:50 112, Order sent to fulfillment
6. 8:24:19 113, -1, Patterns of Enterprise Architecture, K
indle edition, 39.99
7. 8:24:20 113, Refund sent to processing
就像上面例子显示的,文件里的数据已经经过排序。对于一些小文件,你可
以读取整个文件来处理它们,然而,真正的 log 文件通常有大量的内容,你
不能不考虑这个情况。此时你应该考虑过滤出某些内容,把 cat、sort 后的
内容通过
grep
, egrep, fgrep – 打印出匹配条件的文字行
假设我们只对 Patterns of Enterprise Architecture 这本书的订单感兴趣。使
用 grep,我们能限制只输出含有 Patterns 字符的订单。
1. jfields$ cat order.* | sort | grep Patterns
2. 8:22:19 111, 1, Patterns of Enterprise Architecture, Ki
ndle edition, 39.99
3. 8:24:19 113, -1, Patterns of Enterprise Architecture, K
indle edition, 39.99
假设退款订单 113
——
出了一些问题,你希望查看所有相关订单
你又需要使
用 grep 了。
1. jfields$ cat order.* | sort | grep ":\d\d 113, "
2. 8:24:19 113, -1, Patterns of Enterprise Architecture, K
indle edition, 39.99
3. 8:24:20 113, Refund sent to processing
你会发现在 grep
“
上的匹配模式除了 113”外还有一些其它的东西。这是因为
113 还可以匹配上书目或价格,加上额外的字符后,我们可以精确的搜索到
我们想要的东西。
现在我们已经知道了退货的详细信息,我们还想知道日销售和退款总额。但
我们只关心《Patterns of Enterprise Architecture》这本书的信息,而且只
关心数量和价格。我现在要做到是切除我们不关心的任何信息。