练习 9:`sed`
使用这些小型项目来研究你自己是有用的,但让我们来看看你主要关注的主题:
- 开始工作的启动流程,例如你的文本编辑器,你可以打字打的多好,以及计算机内部发生的其他事情。
- 心理状态,当你开始工作时,建议将日志作为控制它的一种方式。
- 工作环境包括你的桌子,照明,椅子和你使用的电脑类型。
- 身体姿势和健康,以避免在工作时受伤。
在这个练习中,我们将采取这一改进计划,并进一步跟踪一些指标。你一直在使用小型命令行工具,阅读并确定其功能,然后花费45分钟来实现一个简单的黑魔法。现在你可以列举你的功能,确定优先级,然后确定在45分钟内可以完成的功能。事实上,你可以回溯目前为止所做的所有项目,以及你的更改笔记,并计算出这一指标,看看你是否在改进。
现在花点时间来回顾你的笔记,并大概估算每45分钟的完成的功能的百分比。在纸上绘制他们,然后看你的笔记,看是否有显著的变化,是好还是坏,当你改变你的工作方式的时候。然后在这个练习中,尝试根据你所做的改变,来预测你将做多少工作。你甚至可以尝试将一些障碍添加回你的流程,看看它如何影响你的生产力。
警告
请记住,这是个人指标,而不是与任何人分享的内容。这些几乎不科学,意味着你仅仅在分析你的工作方式中获得一些客观性。它们不是可以描述所有程序员的宏观指标,但是你最好相信,如果经理发现你有这些东西,他们会要求看到它们。然后,他们会要求你的团队中的每个人都开始做这些工作,然后管理层将会使用这些来引起大量的麻烦。将你的实验室笔记看做非常私人的记录,并且从不让任何人看到它。
挑战练习
这个练习将比其他练习更复杂,因为我们将要处理更多的正则表达式,并实现一个名为sed
的工具。通过接受利用正则表达式替换模式串,sed
工具能够让你改变文本,然后在接收到的每一行中,确定要替换什么。难点可能在于实现sed
的表达式格式,所以我建议你用两种方法来实现:
Lv1 具有命令行选项,用于最基本的sed
用法,将一个字符串替换为另一个字符串。 Lv2 在这些命令行选项中启用正则表达式。 Lv3 是实现sed
表达式格式。
使用sed
的一个例子是,在文本流中将一个单词更改为另一个单词。如果我想更改ls
的输出,以便使用“author”替换我的名字,我可以这样做:
ls -l | sed -e "s/zedshaw/author/g"
然而,sed
的实力在于使用正则表达式来匹配模式串并替换它们。如果你使用 vim 编辑器,那么你已经熟悉这种语法:
ls -l | sed -e"s / Jul [0-9] [0-9] / DATE / g"
你应该阅读man sed
页面,但你可能需要进行更多的研究来实现它。我建议你晚上做你的研究,然后根据这项研究,第二天进行45分钟的 Hack。这将有助于你均衡你的指标,专注于你的工作。
研究性学习
- 当你制订指标时,你是否发现了异常或令人惊讶的事情?
- 在开始本课程之前,你的工作预测是什么?
- 它如何匹配你实际所做的事情?
深入学习
在这个练习的视频(付费)中,我会向你展示一个叫做“运行图”的东西。运行图是你希望监视的一些活动的简单图表,向你显示如何随时间变化。人们使用运行图来发现行为的巨大变化,因为它们是既简单又有效的可视化工具。你将在书中使用运行图,因为它们非常简单但非常强大。