我正在尝试使用subprocess模块在python脚本中使用grep命令。这是我所拥有的:userid='foo12'p=subprocess.Popen(['grep',"%s*.log"%userid],stdout=subprocess.PIPE)它什么也不返回。我不完全确定我做错了什么所以有人可以解释一下。我正在使用的当前有效方法是添加shell=true使其输出正确的输出,但正如帮助页面指出的那样,它是不安全的。我需要帮助来完成这项工作,这样我的脚本才不会不安全。 最佳答案 我认为您遇到了两个问题:这个电话:p=subp
我有很大的日志文件(从100MB到2GB),其中包含我需要在Python程序中解析的(单个)特定行。我必须解析大约20,000个文件。而且我知道搜索到的行在文件的最后200行内,或者最后15000字节内。由于这是一项重复性任务,我需要它尽快完成。最快的获取方式是什么?我想过4个策略:用Python读取整个文件并搜索正则表达式(方法1)只读取文件的最后15,000个字节并搜索正则表达式(方法2)对grep进行系统调用(method_3)在跟踪最后200行后对grep进行系统调用(方法4)以下是我创建的用于测试这些策略的函数:importosimportreimportsubproce
我需要在一堆HTML文件中找到位于以下结构(CSS)中的所有位置:div.aul.b或XPath://div[@class="a"]//div[@class="b"]grep在这里帮不了我。是否有一个命令行工具可以返回符合此条件的所有文件(以及其中的所有位置)?即,如果文件匹配特定的HTML或XML结构,则返回文件名。 最佳答案 试试这个:安装http://www.w3.org/Tools/HTML-XML-utils/.Ubuntu:aptitudeinstallhtml-xml-utils苹果操作系统:brewinstallht
在question中讨论了jQuery和nativeJS如何相互执行。当然,Vanilla解决方案执行得更快,因为它不处理整个数组,我建议使用Array.filter,我非常有信心至少会比快$.grep.令人惊讶的是,在将它添加到测试中后,我得到了一个教训:TestsuiteEdgecases当然会有不同的结果。有人知道为什么$.grep应该比本地方法Arrray.filter快3倍吗?编辑:我修改了测试以使用filtershimfromMDN结果非常有趣:Chrome:即使是MDNshim也比本地方法快,jQuery遥遥领先Firefox:shim比本地方法慢一点,jQuery遥遥领
所以在运行gitcommit之前,我通常会运行以下命令:gitgrep--cached-l-I"debugger"我认为它类似于:gitdiff--cached(这将向您展示您将要提交的所有更改,即,将向您展示暂存文件中的差异)。不幸的是,我刚刚发现gitgrep的--cached选项只是告诉git“只”查看其索引中的所有内容。那么我怎样才能运行gitgrep并让它只grep通过我暂存的文件呢?(是的,我知道我可以简单地执行gitdiff--cached并在其中进行搜索,但我更希望具有通过我的暂存文件进行grep的编程能力。) 最佳答案
如何执行gitgrep并将检查的文件限制为一组文件。我希望能够grep查找MyFunc的.cpp和.h文件的内容。例如:gitgrep"MyFunc"--*.[hc]*然而,这也匹配.c文件和.cs文件。 最佳答案 使用:gitgrep"MyFunc"--'*.cpp''*.h'引号是必需的,以便git扩展通配符而不是shell。如果省略它们,它将只搜索当前目录中的文件,而不包括子目录。 关于git-如何gitgrep只有一组文件扩展名,我们在StackOverflow上找到一个类似的问
是否可以让gitgrep只搜索索引/缓存中的新文件或修改过的文件?(此用例是在预提交Hook中使用,该Hook会在预期提交中查找“调试”代码,例如console.log。但我并不介意“现有”代码中的console.log。最好这也无法匹配已删除的console.log实例,但我可以生活与那些匹配!) 最佳答案 结果证明不是通过gitgrep,而是通过一个完全不同的命令,它也恰好能够搜索:gitdiff-index。(简单性和正交性的又一次胜利……)我想要的可以通过以下方式实现:$gitdiff-index-U--cached-GHE
我有一个巨大的补丁,我想将其分成多个逻辑git提交。大量更改只是简单地更改变量名称或函数调用,以便可以使用grep轻松找到它们。如果我可以将任何与正则表达式匹配的更改添加到索引中,然后在gitgui中进行清理,这将节省我大量的手动工作。是否有使用git中的正则表达式或从grep的某些输出(例如行号)逐行更新索引的好方法?我找到了asimilarquestion,但我不确定如何通过正则表达式类型的搜索构建临时文件。 最佳答案 patchutils有一个命令grepdiff可用于实现此目的。#checkthattheregexsearc
我喜欢gitgrep来搜索checkin存储库的所有文件。这很棒。但是是否可以使用它(或其他一些git命令)来查找文件(独立于内容)?目前我这样做:$find.|grepmiddleware这有效,但它没有使用git索引,这意味着它会遍历每个找到的文件,并报告与.gitignore匹配的文件。有什么巧妙的技巧吗? 最佳答案 也许你想要gitls-files列出索引中的文件?(并自动调整git工作目录中的当前目录) 关于git-如何在gitrepo中grep文件?,我们在StackOver
我想使用gitlog来显示所有不匹配给定模式的提交。我知道我可以使用以下内容来显示所有与模式匹配的提交:gitlog--grep=如何反转匹配的意义?我正在尝试忽略消息中“跳到版本...”的提交。编辑:我希望我的最终输出非常冗长。例如git日志--pretty--stat。所以gitlog--format=oneline的输出对我不起作用。 最佳答案 这将通过Git2.4+(Q22015)成为可能:见commit22dfa8a通过ChristophJunghans(junghans):log:teach--invert-grepop