Score
0
Watch 38 Star 130 Fork 18

布客飞龙 / lmpythw-zh

Join us
Explore and code with more than 5 million developers,Free private repositories !:)
Sign up
This repository doesn't specify license. Without author's permission, this code is only for learning and cannot be used for other purposes.
Clone or download
ex7.md 4.03 KB
Copy Edit Web IDE Raw Blame History
布客飞龙 authored 2017-08-03 21:33 . ex7

练习 7:grep

原文:Exercise 7: grep

译者:飞龙

协议:CC BY-NC-SA 4.0

自豪地采用谷歌翻译

find命令在 45 分钟内应该可能是一个挑战,但它是一个很好的挑战。到了这个时间,你应该可以去掉尽可能多的,阻止你开始的障碍。你可能会发现,当你清除一些障碍时,你的技能会变得更糟。例如,我以前在开始工作之前先走路去喝咖啡。这花了我大约 30分钟,非常好,但 30 分钟多了会变成几个小时。我决定停止这样做,但是我的工作就费劲了。原来我还需要咖啡,所以我买了一台不错的咖啡机,学会了如何制作我自己的拿铁咖啡。现在我站了起来,给自己做一杯拿铁咖啡,然后去画一些画,这让我处于创意工作的模式。

你所做的一切不都是无效的,所以要小心不要因为占用时间而消除一些东西。有一些仪式和个人习惯,可以让你的大脑准备就绪。诀窍是不要消除这些,而是​​让它们在开始工作之前更容易做。

本书的第一部分中,您还应该了解时间管理的概念。设置45分钟的时间限制将使您非常清楚,当您不知道需要多久做某件事的时候。只有45分钟,你不能把 30 分钟浪费在调整你的 vim 窗口上,或者组织完美的目录结构,然后实现一个全新的排序算法。你必须节约你所实现的东西,以及命令你工作的东西。

处理项目的一个很好的方法是从最简单的事情开始,你可以首先配置并运行它。在find示例中,可以通过glob模块获取文件。具有较差时间管理技能的人,会立即尝试实现-exec参数,来证明它们是一个 NB 的程序员,但是-exec不能在没有-name的情况下工作,而且更难实现。决定的方法是告诉自己,你想要一些完成后才能使用的东西。如果45分钟之后,你可以使用-exec,但不能获取文件,那么你如何使用它?如果同一时间之后,你得到了一种方法,来列出匹配名称的文件,那么你已经完成了。

继续处理您的障碍列表,并评估您的开始怎么样,但现在开始看看时间管理。策略化你将要做的工作,以便如果你用完了时间,你做出来了一些可以用的东西。他们不必是完整的功能,但是两个可用的功能比 10 个不可用的更好,因为你忘记了他们所需要的最简单的东西。或者更糟的是 10 个不可用的东西,因为你实现了一半,然后就跳过去了,所以所有这些都不能用。

挑战练习

你现在要实现grep命令了。像往常一样,你应该去读的grepman,然后玩转它。grep的目的是使用正则表达式在文件中搜索文本模式。你使用glob模块实现了find,这次的操作也一样,但在文件中而不是在目录中完成。例如,如果我想在我的书中搜索“help”这个词,我可以这样做:

grep help *.rst

grep的命令行参数相当简单。困难的部分是处理正则表达式,所以你应该依赖于re模块。该模块使您能够加载文件的内容,然后在里面搜索别人在命令行中提供给您的模式串。另一个提示是,您最有可能希望使用readline加载整个文件,而不是使用read。即使效率较低,grep的大部分选项都能更好地运行。

您可能还打算简单浏览练习 30,我在那里介绍正则表达式。

研究性学习

  • re模块有什么特别的选项,使它更像grep吗?
  • 您可以将您的grep黑魔法转换成您在find工具中使用的模块,来添加grep功能吗?

深入学习

re模块是非常重要的,所以花时间去真正研究它,并且学习你能学到的任何事情。我们将在本书的另一部分中使用它以及正则表达式。

Comment ( 0 )

Sign in for post a comment

1
https://gitee.com/wizardforcel/lmpythw-zh.git
git@gitee.com:wizardforcel/lmpythw-zh.git
wizardforcel
lmpythw-zh
lmpythw-zh
master

Help Search