我想在一个文件上获取grep命令的输出,创建一个新文件并将该grep输出保存到新创建的文件中,有人可以指出我将如何做到这一点的正确方向吗?
答案 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兼容的正则表达式)包含在您自己的代码中,让您更精细控制发生的事情。