[有丶意思]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 ~

視頻下面的這個評論也頗有意思:

若是你像我同樣真正熱愛計算機科學,喜歡研究底層邏輯,歡迎關注個人微信公衆號:

相關文章
相關標籤/搜索