[有丶意思]grep的前世此生

视频原文:Where GREP Came From - Computerphile正则表达式

今天在有土逼网看了一个颇有意思的视频,想和你们分享一下。bash

用过 Linux 的人确定都知道grep指令,你有没有好奇过,这个奇怪的名字是怎么来的呢?微信

这会是一个颇有意思的故事。app

在远古时代,计算资源是极其有限的,内存大概只有32kb、64kb 这个级别,disk 也只有几M。这使得软件设计不得不极其简单。编辑器

unix 有一款文字编辑器,叫作ed,做者是大名鼎鼎的Ken Thompson,下面这位:spa

ed的指令都只有一个字符:设计

  • p : print
  • s : delete
  • s : substitute
  • a : append
  • r : read
  • w : write

ed强大的地方在于,能够简单的操做多行:unix

  • 1,10p : 打印1-10行
  • 1,$p : 打印全部行
  • $d : 删除最后一行

还有正则表达式,用//包裹起来code

/print/pcdn

可是还有一个问题,内存是很是小的,可能装不下整个文件。

当时还有一位叫作Lee E. McMahon的计算机科学家从事text analysis 方向的工做。

他想经过text analysis的手段研究一下,The Federalist Papers (联邦党人文集,做者有不少不少人,不少学者想找出是谁写了哪一部分)的做者状况。The Federalist Papers 一共有85篇,加起来也就1M 左右,可是,ed装不下啊。。

因而 Lee 把这个问题向Ken Thompson反应了,因而次日,Ken Thompson对ed的源码作了些修改,开发出了grep,可以实现从多个文件中查找知足特定正则表达式的字符串。

ed中有一个指令,叫作gglobal单词的缩写,能够和其余指令结合使用,好比g/print/p打印后面全部保护print的行。

如今看出点东西来了吗:

g/re/p
复制代码

因此Ken Thompson把这个程序命名为grep

这个故过后面还有彩蛋:

Professor Brian Kernighan90年代在普林斯顿大学教书的时候,给学生们布置了一个任务,给你ed的源代码(大概1800行 c 代码),给你一个星期的时间,写一个grep程序出来。

结果代表:None of them are Ken Thompson ~

视频下面的这个评论也颇有意思:

若是你像我同样真正热爱计算机科学,喜欢研究底层逻辑,欢迎关注个人微信公众号:

相关文章
相关标签/搜索