練習 7:grep
譯者:飛龍
協(xié)議:CC BY-NC-SA 4.0
自豪地采用谷歌翻譯
find
命令在 45 分鐘內應該可能是一個挑戰(zhàn),但它是一個很好的挑戰(zhàn)。到了這個時間翅雏,你應該可以去掉盡可能多的突那,阻止你開始的障礙奖唯。你可能會發(fā)現蚌讼,當你清除一些障礙時峰搪,你的技能會變得更糟岔冀。例如,我以前在開始工作之前先走路去喝咖啡概耻。這花了我大約 30分鐘使套,非常好,但 30 分鐘多了會變成幾個小時鞠柄。我決定停止這樣做童漩,但是我的工作就費勁了。原來我還需要咖啡春锋,所以我買了一臺不錯的咖啡機,學會了如何制作我自己的拿鐵咖啡〔畎迹現在我站了起來期奔,給自己做一杯拿鐵咖啡,然后去畫一些畫危尿,這讓我處于創(chuàng)意工作的模式呐萌。
你所做的一切不都是無效的,所以要小心不要因為占用時間而消除一些東西谊娇。有一些儀式和個人習慣肺孤,可以讓你的大腦準備就緒。訣竅是不要消除這些济欢,而是??讓它們在開始工作之前更容易做赠堵。
本書的第一部分中,您還應該了解時間管理的概念法褥。設置45分鐘的時間限制將使您非常清楚茫叭,當您不知道需要多久做某件事的時候。只有45分鐘半等,你不能把 30 分鐘浪費在調整你的 vim 窗口上揍愁,或者組織完美的目錄結構呐萨,然后實現一個全新的排序算法。你必須節(jié)約你所實現的東西莽囤,以及命令你工作的東西谬擦。
處理項目的一個很好的方法是從最簡單的事情開始,你可以首先配置并運行它朽缎。在find
示例中惨远,可以通過glob
模塊獲取文件。具有較差時間管理技能的人饵沧,會立即嘗試實現-exec
參數锨络,來證明它們是一個 NB 的程序員,但是-exec
不能在沒有-name的情況下工作狼牺,而且更難實現羡儿。決定的方法是告訴自己,你想要一些完成后才能使用的東西是钥。如果45分鐘之后掠归,你可以使用-exec
,但不能獲取文件悄泥,那么你如何使用它虏冻?如果同一時間之后,你得到了一種方法弹囚,來列出匹配名稱的文件厨相,那么你已經完成了。
繼續(xù)處理您的障礙列表鸥鹉,并評估您的開始怎么樣蛮穿,但現在開始看看時間管理。策略化你將要做的工作毁渗,以便如果你用完了時間践磅,你做出來了一些可以用的東西。他們不必是完整的功能灸异,但是兩個可用的功能比 10 個不可用的更好府适,因為你忘記了他們所需要的最簡單的東西》握粒或者更糟的是 10 個不可用的東西檐春,因為你實現了一半,然后就跳過去了儡嘶,所以所有這些都不能用喇聊。
挑戰(zhàn)練習
你現在要實現grep
命令了。像往常一樣蹦狂,你應該去讀的grep
的man
誓篱,然后玩轉它朋贬。grep
的目的是使用正則表達式在文件中搜索文本模式。你使用glob
模塊實現了find
窜骄,這次的操作也一樣锦募,但在文件中而不是在目錄中完成。例如邻遏,如果我想在我的書中搜索“help”這個詞糠亩,我可以這樣做:
grep help *.rst
grep
的命令行參數相當簡單。困難的部分是處理正則表達式准验,所以你應該依賴于re
模塊赎线。該模塊使您能夠加載文件的內容,然后在里面搜索別人在命令行中提供給您的模式串糊饱。另一個提示是垂寥,您最有可能希望使用readline
加載整個文件,而不是使用read
另锋。即使效率較低滞项,grep
的大部分選項都能更好地運行。
您可能還打算簡單瀏覽練習 30夭坪,我在那里介紹正則表達式文判。
研究性學習
-
re
模塊有什么特別的選項,使它更像grep
嗎室梅? - 您可以將您的
grep
黑魔法轉換成您在find
工具中使用的模塊戏仓,來添加grep
功能嗎?
深入學習
re
模塊是非常重要的柜去,所以花時間去真正研究它,并且學習你能學到的任何事情。我們將在本書的另一部分中使用它以及正則表達式讼撒。