Python を使用して以下のシステム コマンドを実行しようとしています。
cat txt_file | egrep "keyword1|keyword2|keyword3"
以下のpythonコードを使用:
p1 = subprocess.Popen (['cat', txt_file], stdout=subprocess.PIPE)
p2 = subprocess.Popen (['egrep', "\"" + keyword_list + "\""], stdin=p1.stdout, stdout=subprocess.PIPE)
#where keyword_list is : "keyword1|keyword2|keyword3"
p1.stdout.close() #for p2 to exit if SIGPIPE from p1
out = p2.communicate()[0]
egrep 出力には複数の行がありますが、上記のスクリプトを使用すると、変数の中間のキーワード 2 に一致する行のみを取得できますout
。
ここで何が問題になる可能性がありますか?
更新: プラットフォーム: Windows txt_file はかなり大きい ~8 MB