当前位置: 技术问答>linux和unix
求助:C++在读文件时,调用grep
来源: 互联网 发布时间:2016-07-15
本文导语: 我用C++打开一个文本文件, 并用getline(ifs, strLine, 'n')方法,依次读取其中的每一行。 在读出每一行字符串后, 希望调用grep方法,判断是否包含所需的信息。 请问,该如何实现呢? 谢谢!! | ...
我用C++打开一个文本文件,
并用getline(ifs, strLine, 'n')方法,依次读取其中的每一行。
在读出每一行字符串后,
希望调用grep方法,判断是否包含所需的信息。
请问,该如何实现呢?
谢谢!!
并用getline(ifs, strLine, 'n')方法,依次读取其中的每一行。
在读出每一行字符串后,
希望调用grep方法,判断是否包含所需的信息。
请问,该如何实现呢?
谢谢!!
|
我给的是C的:
/* ls -l| grep ^d */
#include
#define MAX 1024
main(int argc,char **argv){
char msg[MAX+1];
FILE *fp1=popen("ls -l","r");
FILE *fp2=popen("grep ^d","w");
while(fgets(msg,sizeof(msg),fp1)){
fputs(msg,fp2);
}
pclose(fp1);
pclose(fp2);
return 0;
}
/* ls -l| grep ^d */
#include
#define MAX 1024
main(int argc,char **argv){
char msg[MAX+1];
FILE *fp1=popen("ls -l","r");
FILE *fp2=popen("grep ^d","w");
while(fgets(msg,sizeof(msg),fp1)){
fputs(msg,fp2);
}
pclose(fp1);
pclose(fp2);
return 0;
}
|
/********************************************************
* function:match
* purpose:正则表达式匹配
* return: 1:匹配成功 0:不存在匹配的子字符串
* string : 查找字符串 pattern:正则表达式字符串,例 "{aaa}|{bbb}"
*********************************************************/
int match(const char* string, char* pattern)
{
int i;
regex_t re;
char buf[256];
i = regcomp(&re, pattern, REG_EXTENDED | REG_NOSUB);
if (i != 0)
{
(void) regerror(i, &re, buf, sizeof buf);
//printf("%sn",buf);
return(0);
}
i = regexec(&re, string, (size_t) 0, NULL, 0);
regfree(&re);
if (i != 0)
{
(void) regerror(i, &re, buf, sizeof buf);
//printf("%sn",buf);
return(0);
}
return(1);
}
* function:match
* purpose:正则表达式匹配
* return: 1:匹配成功 0:不存在匹配的子字符串
* string : 查找字符串 pattern:正则表达式字符串,例 "{aaa}|{bbb}"
*********************************************************/
int match(const char* string, char* pattern)
{
int i;
regex_t re;
char buf[256];
i = regcomp(&re, pattern, REG_EXTENDED | REG_NOSUB);
if (i != 0)
{
(void) regerror(i, &re, buf, sizeof buf);
//printf("%sn",buf);
return(0);
}
i = regexec(&re, string, (size_t) 0, NULL, 0);
regfree(&re);
if (i != 0)
{
(void) regerror(i, &re, buf, sizeof buf);
//printf("%sn",buf);
return(0);
}
return(1);
}
|
为甚么要用 grep ?
strstr 函数就可以实现查找。
strstr 函数就可以实现查找。
|
如果你要 用 grep , 不如 :
直接获取
cat filename | grep "aaa" | grep "bbb"
直接获取
cat filename | grep "aaa" | grep "bbb"
|
用regcmp()加regexec()
|
把fp1命令改成 cat YOUR_FILE 吧。
"cat YOUR_FILE|grep ..."
"cat YOUR_FILE|grep ..."
|
popen吧,CPP里应该也有。
|
是啊
|
装一个正则库呵呵。