来自python的grep命令

时间:2017-07-14 00:06:14

标签: python shell unix grep

我使用了来自shell的grep命令并且它给出了我想要的结果但是当我使用os.popen运行我的python脚本时它说

grep: SUMMARY:: No such file or directory

普通grep命令:

grep -A 12 -i "LOGBOOK SUMMARY:" my_folder/logbook.log

Python脚本

command="grep -A 12 -i LOGBOOK SUMMARY: my_folder/logbook.log"
result=os.popen(command)

正常的grep命令给出了我想要的结果。 第二个说没有这样的文件或目录

1 个答案:

答案 0 :(得分:4)

您需要将搜索模式括在引号中:

command="grep -A 12 -i 'LOGBOOK SUMMARY:' my_folder/logbook.log"

如何诊断此类问题?从错误消息开始:

grep: SUMMARY:: No such file or directory

此错误消息告知grep找不到名为SUMMARY:的文件。

要问的正确问题是,grep为什么要查找名为SUMMARY:的文件? 答案是在你执行的命令行上, 某种程度上SUMMARY:被视为文件名:

command="grep -A 12 -i LOGBOOK SUMMARY: my_folder/logbook.log"

当然!如果你在shell中执行该命令会发生这种情况:

grep -A 12 -i LOGBOOK SUMMARY: my_folder/logbook.log

这里,shell会在空格上拆分命令行, 并传递给grep 3个参数,LOGBOOKSUMMARY:my_folder/logbook.log。 第一个参数LOGBOOK用作搜索模式, 并将所有剩余的参数作为要搜索的文件名。