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

笨办法学 Python · 续 练习 7:`grep`相关推荐

  1. 笨办法学 Python · 续 中文版

    笨办法学 Python · 续 中文版 原书:Learn More Python 3 The Hard Way 译者:飞龙 自豪地采用谷歌翻译 在线阅读 PDF格式 EPUB格式 MOBI格式 代码仓 ...

  2. 笨办法学 Python · 续 练习 33:解析器

    练习 33:解析器 原文:Exercise 33: Parsers 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 想象一下,你将获得一个巨大的数字列表,你必须将其输入到电子表格 ...

  3. 笨办法学 Python · 续 练习 0:起步

    练习 0:起步 原文:Exercise 0: The Setup 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 你需要设置和配置一些工具来学习此书.有可能你已经有了很多这些东西 ...

  4. 笨办法学 Python · 续 第二部分:简单的黑魔法

    第二部分:简单的黑魔法 原文:Part II: Quick Hacks 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 你有最好的想法,你会打动世界!你会成为一个亿万富豪!你的大 ...

  5. 笨办法学 Python · 续 练习 52:`moreweb`

    练习 52:moreweb 原文:Exercise 52: moreweb 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 现在,你已经使用 Python http.server ...

  6. 笨办法学 Python · 续 练习 24:URL 快速路由

    练习 24:URL 快速路由 原文:Exercise 24: Fast URL Search 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 我们将结束数据结构和算法的部分,并将 ...

  7. 笨办法学 Python · 续 练习 32:扫描器

    练习 32:扫描器 原文:Exercise 32: Scanners 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 我的第一本书在练习 48 中非常偶然涉及到了扫描器,但现在我 ...

  8. 笨办法学 Python · 续 练习 28:`sh`

    练习 28:sh 原文:Exercise 28: sh 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 你现在将继续你的 TDD 风格流程,但你将添加一个小型的 Hack 会话来 ...

  9. 笨办法学 Python · 续 练习 18:性能测量

    练习 18:性能测量 原文:Exercise 18: Measuring Performance 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 在本练习中,你将学习使用多种工具 ...

最新文章

  1. 10月份机房技术指标
  2. Interview with BOA
  3. Future和CompletableFuture的区别和对比,以及Future主要的四个缺点——不能回调会阻塞、批量任务处理彼此依赖会阻塞、不能多个任务级联执行、得不到最先完成的任务
  4. OS / Linux / Inode 详解
  5. mysql存储过程表迁移for_MySQL存储过程--通过游标遍历和异常处理迁移数据到历史表 (转)...
  6. .net面试问答(大汇总)
  7. 基础知识—循环语句-while
  8. 微拍堂推出“正义联盟计划” 助力文玩行业高质量发展
  9. linux ping 虚拟网卡_虚拟机中Linux系统网卡的配置
  10. 异构SOA系统架构之Asp.net实现(兼容dubbo)
  11. 【java笔记】方法引用介绍和使用
  12. C# 委托与事件(delegate)
  13. S3C2440 LCD驱动(FrameBuffer)实例开发一(转)
  14. python直接取系统的时间_用Python在Linux中获得系统正常运行时间的最快方法
  15. 【Gym-101889 D】Daunting device【分块】
  16. 蒙特卡洛模拟分析市场风险
  17. 2020版PS基础入门视频教程全集
  18. 好玩,易推广,猜骰子游戏
  19. 实时分析:Flume+Kafka+SparkStreaming商品评分排行榜
  20. 本机查看文件服务器所有共享的文件,谁访问,谁打开,

热门文章

  1. (57)Verilog HDL选择运算符:?
  2. (01)System Verilog验证理论
  3. python字符串说法错误的是_【单选题】关于Python字符串的表示方法,下列说法错误的是: A. 字符串是字符的序列表示,只能由...
  4. mysql多张表join_mysql 连接查询(多表查询)+子查询-初学教程 3【重点】
  5. 进程的优先级设置与获取,进程时间
  6. __asm__ __volatile__ 嵌入式内嵌汇编语法解构
  7. ROS 教程之 navigation : 用 move_base 控制自己的机器人(2)
  8. linux下qt制作日历,课内资源
  9. ecms 列表模板php,帝国CMS列表页模板list.var分别调用年月日(显示个性时间日期)
  10. 【高校宿舍管理系统】第四章 创建前端项目以及完成登录页面