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 命令变换我们的文件行,之后我们在再用 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'
我们对例子中使用的正则表达式多说几句,不过也没有什么复杂的。正则表
达式做了下面几种事情
•
删除时间戳
•
捕捉订单号
•
删除订单号后的逗号和空格