background image

cut

cut

 – 删除文件中字符行上的某些区域

又要使用 grep,我们用 grep 过滤出我们想要的行。有了我们想要的行信息,
我们就可以把它们切成小段,删除不需要的部分数据。

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  
4.  
5. jfields$ cat order.* | sort | grep Patterns | cut -d"," -
f2,5  
6.  1, 39.99  
7.  -1, 39.99 

现在,我们把数据缩减为我们计算想要的形式,把这些数据粘贴到 Excel 里
立刻就能得到结果了。
cut 是用来消减信息、简化任务的,但对于输出内容,我们通常会有更复杂
的形式。假设我们还需要知道订单的 ID,这样可以用来关联相关的其他信息。
我们用 cut 可以获得 ID 信息,但我们希望把 ID 放到行的最后,用单引号包
上。

sed

sed

 – 一个流编辑器。它是用来在输入流上执行基本的文本变换。

下面的例子展示了如何用 sed 命令变换我们的文件行,之后我们在再用 cut
移除无用的信息。

1. jfields$ cat order.* | sort | grep Patterns \  
2.

>

| sed s/"[0-9\:]* \([0-9]*\)\, \(.*\)"/"\2, '\1'"/  

3. 1, Patterns of Enterprise Architecture, Kindle edition, 
39.99, '111'  
4. -1, Patterns of Enterprise Architecture, Kindle edition, 
39.99, '113'  
5.  
6. lmp-jfields01:~ jfields$ cat order.* | sort | grep Patter
ns \  
7.

>

| sed s/"[0-9\:]* \([0-9]*\)\, \(.*\)"/"\2, '\1'"/ | cut -d"," 

-f1,4,5  
8. 1, 39.99, '111'  
9. -1, 39.99, '113' 

我们对例子中使用的正则表达式多说几句,不过也没有什么复杂的。正则表
达式做了下面几种事情

删除时间戳

捕捉订单号

删除订单号后的逗号和空格