練習(xí) 7:grep
譯者:飛龍
協(xié)議:CC BY-NC-SA 4.0
自豪地采用谷歌翻譯
find
命令在 45 分鐘內(nèi)應(yīng)該可能是一個(gè)挑戰(zhàn),但它是一個(gè)很好的挑戰(zhàn)。到了這個(gè)時(shí)間,你應(yīng)該可以去掉盡可能多的,阻止你開(kāi)始的障礙。你可能會(huì)發(fā)現(xiàn),當(dāng)你清除一些障礙時(shí),你的技能會(huì)變得更糟。例如,我以前在開(kāi)始工作之前先走路去喝咖啡。這花了我大約 30分鐘,非常好,但 30 分鐘多了會(huì)變成幾個(gè)小時(shí)。我決定停止這樣做,但是我的工作就費(fèi)勁了。原來(lái)我還需要咖啡,所以我買了一臺(tái)不錯(cuò)的咖啡機(jī),學(xué)會(huì)了如何制作我自己的拿鐵咖啡。現(xiàn)在我站了起來(lái),給自己做一杯拿鐵咖啡,然后去畫一些畫,這讓我處于創(chuàng)意工作的模式。
你所做的一切不都是無(wú)效的,所以要小心不要因?yàn)檎加脮r(shí)間而消除一些東西。有一些儀式和個(gè)人習(xí)慣,可以讓你的大腦準(zhǔn)備就緒。訣竅是不要消除這些,而是??讓它們?cè)陂_(kāi)始工作之前更容易做。
本書的第一部分中,您還應(yīng)該了解時(shí)間管理的概念。設(shè)置45分鐘的時(shí)間限制將使您非常清楚,當(dāng)您不知道需要多久做某件事的時(shí)候。只有45分鐘,你不能把 30 分鐘浪費(fèi)在調(diào)整你的 vim 窗口上,或者組織完美的目錄結(jié)構(gòu),然后實(shí)現(xiàn)一個(gè)全新的排序算法。你必須節(jié)約你所實(shí)現(xiàn)的東西,以及命令你工作的東西。
處理項(xiàng)目的一個(gè)很好的方法是從最簡(jiǎn)單的事情開(kāi)始,你可以首先配置并運(yùn)行它。在find
示例中,可以通過(guò)glob
模塊獲取文件。具有較差時(shí)間管理技能的人,會(huì)立即嘗試實(shí)現(xiàn)-exec
參數(shù),來(lái)證明它們是一個(gè) NB 的程序員,但是-exec
不能在沒(méi)有-name的情況下工作,而且更難實(shí)現(xiàn)。決定的方法是告訴自己,你想要一些完成后才能使用的東西。如果45分鐘之后,你可以使用-exec
,但不能獲取文件,那么你如何使用它?如果同一時(shí)間之后,你得到了一種方法,來(lái)列出匹配名稱的文件,那么你已經(jīng)完成了。
繼續(xù)處理您的障礙列表,并評(píng)估您的開(kāi)始怎么樣,但現(xiàn)在開(kāi)始看看時(shí)間管理。策略化你將要做的工作,以便如果你用完了時(shí)間,你做出來(lái)了一些可以用的東西。他們不必是完整的功能,但是兩個(gè)可用的功能比 10 個(gè)不可用的更好,因?yàn)槟阃浟怂麄兯枰淖詈?jiǎn)單的東西?;蛘吒愕氖?10 個(gè)不可用的東西,因?yàn)槟銓?shí)現(xiàn)了一半,然后就跳過(guò)去了,所以所有這些都不能用。
挑戰(zhàn)練習(xí)
你現(xiàn)在要實(shí)現(xiàn)grep
命令了。像往常一樣,你應(yīng)該去讀的grep
的man
,然后玩轉(zhuǎn)它。grep
的目的是使用正則表達(dá)式在文件中搜索文本模式。你使用glob
模塊實(shí)現(xiàn)了find
,這次的操作也一樣,但在文件中而不是在目錄中完成。例如,如果我想在我的書中搜索“help”這個(gè)詞,我可以這樣做:
grep help *.rst
grep
的命令行參數(shù)相當(dāng)簡(jiǎn)單。困難的部分是處理正則表達(dá)式,所以你應(yīng)該依賴于re
模塊。該模塊使您能夠加載文件的內(nèi)容,然后在里面搜索別人在命令行中提供給您的模式串。另一個(gè)提示是,您最有可能希望使用readline
加載整個(gè)文件,而不是使用read
。即使效率較低,grep
的大部分選項(xiàng)都能更好地運(yùn)行。
您可能還打算簡(jiǎn)單瀏覽練習(xí) 30,我在那里介紹正則表達(dá)式。
研究性學(xué)習(xí)
-
re
模塊有什么特別的選項(xiàng),使它更像grep
嗎? - 您可以將您的
grep
黑魔法轉(zhuǎn)換成您在find
工具中使用的模塊,來(lái)添加grep
功能嗎?
深入學(xué)習(xí)
re
模塊是非常重要的,所以花時(shí)間去真正研究它,并且學(xué)習(xí)你能學(xué)到的任何事情。我們將在本書的另一部分中使用它以及正則表達(dá)式。