2013-10-05 42 views
2

所以,bash命令,我會是通常使用bash腳本會是這樣的:比Python上的Grep快嗎?

$ cat huge2GBfile.txt | grep -w "pattern1/|pattern2/|pattern3" > out.txt 

它將輸出,其中已發現pattern1,2,3在huge2GBfile行。我想知道這是否可以通過python實現。我知道,我可以使用

os.system(cmd) 

但我想知道是否有類似的Python的東西(我是一個完整的noob),如果它比使用cat + grep的速度更快。 謝謝!

最初的想法,就會像

for line in f: 
    if pattern in line: 
      out.write(line) 

更快?

+8

旁註:'貓X | grep Y'可以寫作爲'grep Y X'([UUOC](http://partmaps.org/era/unix/award.html)) – miku

+2

......並且它會更快。 –

+3

和'貓X | anytool'一般可以寫成anytool geoffspear

回答

3

即使使用比grep邏輯更好的算法(正如某人已經評論過的那樣,他們已經被高度優化了,grep已經30歲了),但仍然存在這樣的事實:它們是用C語言編寫的實用程序,爲系統。

Python是一種解釋型語言,可能比原生C慢兩個數量級,所以我會認爲答案是否定的,python中沒有任何東西可以更快。

如果你想一行一行地輸出一個grep命令行,一個選項是建立你的python腳本,類似於一個unix命令行工具,這樣它就可以讀取標準輸入並寫入標準輸出,所以你可以使用類似:

grep pattern file | python myscript.py 

How do you read from stdin in Python?