Tag: grep

在C中将字符串传递给popen时保留双引号

我正处于一个两难的境地,我试图在C中通过popen传递一个字符串,但是它在字符串中保留了双引号。 该字符串如下: ssh %s@%s grep -c \”%s\” %s%s 我需要运行此命令,以便从远程系统上的日志中获取grep并返回它的计数。 我通过字符串传递不同的参数,因此它生成用户名和密码以及搜索字符串和目标。 但是,搜索字符串包含由空格字符分隔的多个单词,因此我需要完整的双引号,以便正确解析搜索字符串。 但是,到目前为止,popen已经从字符串中删除了双引号,因此搜索无法完成。 我不确定另一种方法来执行远程ssh命令,或者在语句中保留双引号。 有任何想法吗? 谢谢! *编辑:这是我用来生成字符串以及popen命令的完整sprintf语句。 sprintf(command, “ssh %s@%s grep -c \”%s\” %s%s”, user, server, search, path, file); fd = popen(command, “r”);

参数列表是否将字符串引号传递给C中的exec命令?

我正在使用execvp为命令grep -l night *执行一个新进程。 这是我的代码: char * argument[5]; char keyword[] = “night”; argument[0] = (char *) malloc (sizeof(char)*25); argument[1] = (char *) malloc (sizeof(char)*25); argument[2] = (char *) malloc (sizeof(char)*25); argument[3] = (char *) malloc (sizeof(char)*25); argument[4] = (char *) malloc (sizeof(char)*25); argument[0] = “grep”; argument[1] = “-l”; strcpy(argument[2],keyword); argument[3] = “*”; argument[4] = NULL; […]

如何在C中获取grep的输出

我正在使用函数execl()在我的C代码中执行grep命令,我想在我的C程序中使用此命令的输出。 我该怎么做?

列出C / C ++函数(Unix中的代码分析)

无论我们是维护不熟悉的代码还是检查Apache模块的实现细节,如果我们能够快速遍历代码并构建我们正在查看的内容的概述,它将会有所帮助。 Grep服务于我的大部分日常需求,但有些情况下它不会做。 以下是它可以提供帮助的常见示例。 要找到我感兴趣的PHP函数的定义,我可以在命令行输入: grep -r “function myfunc” . 如果我们知道返回类型,这可以很快适应C或C ++,但是如果我想列出我的类提供的每个方法,事情会变得更复杂: grep “function ” ./src/mine.class.php 由于没有单一的关键字表示C ++中的函数或方法,并且因为它通常是更复杂的语法,我认为我需要某种静态代码分析工具,智能使用C预处理器或盲目信任编码器遵循严格的代码指南(空白的数量,curites的位置等)以获得这些结果。 你会推荐什么?

如何在源代码中查找搜索词

我正在寻找一种方法来搜索项目的C / C ++代码中的给定术语,同时忽略注释和字符串中的任何出现。 由于代码库相当大,我正在寻找一种方法来自动识别与我的搜索词匹配的代码行,因为它们需要手动检查。 如果可能的话,我想在我的linux系统上执行搜索。 背景 有问题的代码库是一个带有大量第三方插件的实时信号处理引擎。 插件是用各种语言实现的(主要是C语言,还有C ++和其他语言;目前我只关心这两种语言),没有强制执行任何标准。 我们的代码库目前使用内置类型float来表示浮点数,我们想用一个允许我们使用双精度数的typedef替换它。 我们希望在实际代码中找到所有出现的float (忽略注释和打印输出中的合法用法)。 更复杂的是,在代码有效负载中有一些(虽然很少) 合法使用float (因此我们真的在寻找一种方法来识别所有需要手动检查的地方,而不是运行一些自动搜索和替换。) 代码还包含C样式的静态强制转换为(float) ,因此依靠编译器警告来识别类型不匹配通常不是一种选择。 代码库由超过3000个(C和C ++)文件组成,累积约750000行代码。 代码是跨平台的(linux,osx,w32是主要目标;但也是freebsd和类似的),并使用各种本机编译器(gcc / g ++,clang / clang ++,VisualStudio,…)进行编译。 至今… 到目前为止,我正在使用丑陋的东西: grep “\bfloat\b” | sed -e ‘s|//.*||’ -e ‘s|”[^”]*”||g’ | grep “\bfloat\b” 但我认为必须有一些更好的方法来搜索有效载荷代码。