如何获取grep的输出并将其写入新文件

时间:2015-02-16 04:32:57

标签: c file grep

我想在一个文件上获取grep命令的输出,创建一个新文件并将该grep输出保存到新创建的文件中,有人可以指出我将如何做到这一点的正确方向吗?

1 个答案:

答案 0 :(得分:2)

您选择的路径很大程度上取决于您希望它变得多么简单。

也许最简单的方法是使用system

#include <stdio.h>
#include <stdlib.h>

int main (void) {
        system ("grep a *.c >outfile.txt");
        return 0;
}

如果你有grep的不同参数或非固定输出文件,你也可以动态构造命令


除此之外,你可以使用popen()(如果你的实现可用 - 它不是由ISO强制要求,而是POSIX的东西)以及fgets()fgetc()来读取输出该命令,并随心所欲地做任何事情:

#include <stdio.h>

int main (void) {
    int chr;

    FILE *echo = popen ("echo hello there", "r");
    if (echo != NULL) {
        while ((chr = fgetc (echo)) != EOF)
            putchar (chr);
        fclose (echo);
    }
    return 0;
}

下一步可能完全不依赖于外部grep,而是将PCRE(Perl兼容的正则表达式)包含在您自己的代码中,让您更精细控制发生的事情。