python - 来自 python 的 grep 命令

标签 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 命令给出了我想要的结果。 第二个说没有这样的文件或目录

最佳答案

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

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 用作搜索模式, 所有剩余的参数都将作为要搜索的文件名。

关于python - 来自 python 的 grep 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45092671/

相关文章:

python - 从数据库中获取多个值

python - 在终端或 python 中打印 x 个字符?

php - git-shell 命令中的 "Run with no arguments or with -c cmd"是什么意思?

shell - 如何在任何时候恢复 ftp 下载? (shell 脚本,wget 选项)?

linux - 合并许多大型 CSV 文件(在 Linux 中)

linux - 使用批处理脚本从Windows检查Linux服务器中的服务

python - 使用 Keras 时如何更改层中的单元数?

python - 用 Python 替换文件中的文本

linux - Unix : Restricting a directory to an user

c - 将 pid 写入 fifo - C