所以,我通常在Bash脚本中使用的bash命令是这样的:
$ cat huge2GBfile.txt | grep -w "pattern1/|pattern2/|pattern3" > out.txt
它将在huge2GB文件中输出已找到pattern1,2,3的行。我想知道这是否可以通过python实现。我知道我可以使用
os.system(cmd)
但是我想知道Python中是否有类似的东西(我是一个完整的菜鸟),如果它比使用cat + grep更快。 谢谢!
最初的想法,就像
for line in f:
if pattern in line:
out.write(line)
更快?
答案 0 :(得分:4)
即使算法比grep使用的逻辑更好(因为有人已经评论过它们已经过高度优化,grep已有30年了!),仍然有一个事实是它们是用C编写的实用程序,并且本机编译为系统。
Python是一种解释型语言,可能比原生C慢几个数量级,所以我认为答案是否定的,python中没有任何内容可以更快。
如果你想逐行处理grep命令的输出,可以选择构建类似于unix命令行工具的python脚本,这样它就可以从stdin读取并写入stdout,这样就可以了使用类似的东西:
grep pattern file | python myscript.py