首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么打印的数据比我预期的要多?

为什么打印的数据比我预期的要多?
EN

Stack Overflow用户
提问于 2015-10-16 03:07:23
回答 1查看 53关注 0票数 0

这是我昨天遇到的另一个问题的下一部分,Awk doesn't match all match all my entries。我想用perl替换awk,我的第一个目标是在.c中提取函数声明并将其放入.h中。所以我想出了这个:

代码语言:javascript
复制
cat dict3.c | perl -ne '/([a-z_*]+[[:space:]]+[a-z_*]+[[:space:]]*\(.*?\))/i; print $1 . ";\n"'

但输出结果是:

代码语言:javascript
复制
    ;
;
;
;
;
;
;
;
dictent_t* dictentcreate(const char * key, const char * val);
dictent_t* dictentcreate(const char * key, const char * val);
dictent_t* dictentcreate(const char * key, const char * val);
dictent_t* dictentcreate(const char * key, const char * val);
dictent_t* dictentcreate(const char * key, const char * val);
dictent_t* dictentcreate(const char * key, const char * val);
dictent_t* dictentcreate(const char * key, const char * val);
dictent_t* dictentcreate(const char * key, const char * val);
dictent_t* dictentcreate(const char * key, const char * val);
dictent_t* dictentcreate(const char * key, const char * val);
dictent_t* dictentcreate(const char * key, const char * val);
dictent_t* dictentcreate(const char * key, const char * val);
dictent_t* dictentcreate(const char * key, const char * val);
dictent_t* dictentcreate(const char * key, const char * val);
dictent_t* dictentcreate(const char * key, const char * val);
dictent_t* dictentcreate(const char * key, const char * val);
dictent_t* dictentcreate(const char * key, const char * val);
dictent_t* dictentcreate(const char * key, const char * val);
dict_t* dictcreate();
dict_t* dictcreate();
dict_t* dictcreate();
dict_t* dictcreate();
dict_t* dictcreate();
dict_t* dictcreate();
dict_t* dictcreate();
dict_t* dictcreate();
dict_t* dictcreate();
dict_t* dictcreate();
dict_t* dictcreate();
dict_t* dictcreate();
dict_t* dictcreate();
dict_t* dictcreate();
dict_t* dictcreate();
dict_t* dictcreate();
void dictdestroy(*dict_t d);
void dictdestroy(*dict_t d);
void dictdestroy(*dict_t d);
void dictdestroy(*dict_t d);
void dictdestroy(*dict_t d);
void dictdestroy(*dict_t d);
void dictdestroy(*dict_t d);
void dictdestroy(*dict_t d);
void dictdestroy(*dict_t d);
void dictdestroy(*dict_t d);
void dictdestroy(*dict_t d);
void dictdestroy(*dict_t d);
void dictdestroy(*dict_t d);
void dictdestroy(*dict_t d);
void dictdestroy(*dict_t d);
void dictdestroy(*dict_t d);
void dictdump(dict_t *d);
void dictdump(dict_t *d);
void dictdump(dict_t *d);
void dictdump(dict_t *d);
void dictdump(dict_t *d);
void dictdump(dict_t *d);
void dictdump(dict_t *d);
void dictdump(dict_t *d);
void dictdump(dict_t *d);
void dictdump(dict_t *d);
void dictdump(dict_t *d);
void dictdump(dict_t *d);
int dictlook(dict_t *d, const char * key);
int dictlook(dict_t *d, const char * key);
int dictlook(dict_t *d, const char * key);
int dictlook(dict_t *d, const char * key);
int dictlook(dict_t *d, const char * key);
int dictlook(dict_t *d, const char * key);
int dictlook(dict_t *d, const char * key);
int dictlook(dict_t *d, const char * key);
int dictlook(dict_t *d, const char * key);
int dictlook(dict_t *d, const char * key);
int dictlook(dict_t *d, const char * key);
int dictlook(dict_t *d, const char * key);
int dictlook(dict_t *d, const char * key);
int dictlook(dict_t *d, const char * key);
int dictget(char* s, dict_t *d, const char *key);
int dictget(char* s, dict_t *d, const char *key);
int dictget(char* s, dict_t *d, const char *key);
int dictget(char* s, dict_t *d, const char *key);
int dictget(char* s, dict_t *d, const char *key);
int dictget(char* s, dict_t *d, const char *key);
int dictget(char* s, dict_t *d, const char *key);
int dictget(char* s, dict_t *d, const char *key);
int dictget(char* s, dict_t *d, const char *key);
int dictget(char* s, dict_t *d, const char *key);
int dictget(char* s, dict_t *d, const char *key);
int dictget(char* s, dict_t *d, const char *key);
int dictget(char* s, dict_t *d, const char *key);
int dictget(char* s, dict_t *d, const char *key);
int dictget(char* s, dict_t *d, const char *key);
dict_t* dictadd(dict_t* d, const char * key, const char * val);
dict_t* dictadd(dict_t* d, const char * key, const char * val);
dict_t* dictadd(dict_t* d, const char * key, const char * val);
dict_t* dictadd(dict_t* d, const char * key, const char * val);
dict_t* dictadd(dict_t* d, const char * key, const char * val);
dict_t* dictadd(dict_t* d, const char * key, const char * val);
dict_t* dictadd(dict_t* d, const char * key, const char * val);
dict_t* dictadd(dict_t* d, const char * key, const char * val);
dict_t* dictadd(dict_t* d, const char * key, const char * val);
dict_t* dictadd(dict_t* d, const char * key, const char * val);
dict_t* dictadd(dict_t* d, const char * key, const char * val);
dict_t* dictadd(dict_t* d, const char * key, const char * val);
dict_t* dictadd(dict_t* d, const char * key, const char * val);
dict_t* dictadd(dict_t* d, const char * key, const char * val);
dict_t* dictadd(dict_t* d, const char * key, const char * val);
dict_t* dictadd(dict_t* d, const char * key, const char * val);
dict_t* dictadd(dict_t* d, const char * key, const char * val);
dict_t* dictadd(dict_t* d, const char * key, const char * val);
dict_t* dictadd(dict_t* d, const char * key, const char * val);
dict_t* dictadd(dict_t* d, const char * key, const char * val);
dict_t* dictadd(dict_t* d, const char * key, const char * val);
dict_t* dictadd(dict_t* d, const char * key, const char * val);
dict_t* dictadd(dict_t* d, const char * key, const char * val);
dict_t* dictadd(dict_t* d, const char * key, const char * val);
dict_t* dictadd(dict_t* d, const char * key, const char * val);
dict_t* dictadd(dict_t* d, const char * key, const char * val);
dict_t* dictadd(dict_t* d, const char * key, const char * val);
dict_t* dictadd(dict_t* d, const char * key, const char * val);
dict_t* dictadd(dict_t* d, const char * key, const char * val);
dict_t* dictadd(dict_t* d, const char * key, const char * val);
dict_t* dictadd(dict_t* d, const char * key, const char * val);
dict_t* dictadd(dict_t* d, const char * key, const char * val);
dict_t dictup(dict_t d, const char * key, const char * newval);
dict_t dictup(dict_t d, const char * key, const char * newval);
dict_t dictup(dict_t d, const char * key, const char * newval);
dict_t dictup(dict_t d, const char * key, const char * newval);
dict_t dictup(dict_t d, const char * key, const char * newval);
dict_t dictup(dict_t d, const char * key, const char * newval);
dict_t dictup(dict_t d, const char * key, const char * newval);
dict_t dictup(dict_t d, const char * key, const char * newval);
dict_t dictup(dict_t d, const char * key, const char * newval);
dict_t dictup(dict_t d, const char * key, const char * newval);
dict_t dictup(dict_t d, const char * key, const char * newval);
dict_t dictup(dict_t d, const char * key, const char * newval);
dict_t dictup(dict_t d, const char * key, const char * newval);
dict_t dictup(dict_t d, const char * key, const char * newval);
dict_t dictup(dict_t d, const char * key, const char * newval);
dict_t dictup(dict_t d, const char * key, const char * newval);
dict_t dictup(dict_t d, const char * key, const char * newval);
dict_t dictup(dict_t d, const char * key, const char * newval);
dict_t dictup(dict_t d, const char * key, const char * newval);
dict_t dictup(dict_t d, const char * key, const char * newval);
dict_t dictup(dict_t d, const char * key, const char * newval);
dict_t dictup(dict_t d, const char * key, const char * newval);
dict_t dictup(dict_t d, const char * key, const char * newval);
dict_t* dictrm(dict_t* d, const char * key);
dict_t* dictrm(dict_t* d, const char * key);
dict_t* dictrm(dict_t* d, const char * key);
dict_t* dictrm(dict_t* d, const char * key);
dict_t* dictrm(dict_t* d, const char * key);
dict_t* dictrm(dict_t* d, const char * key);
dict_t* dictrm(dict_t* d, const char * key);
dict_t* dictrm(dict_t* d, const char * key);
dict_t* dictrm(dict_t* d, const char * key);
dict_t* dictrm(dict_t* d, const char * key);
dict_t* dictrm(dict_t* d, const char * key);
dict_t* dictrm(dict_t* d, const char * key);
dict_t* dictrm(dict_t* d, const char * key);
dict_t* dictrm(dict_t* d, const char * key);
dict_t* dictrm(dict_t* d, const char * key);
dict_t* dictrm(dict_t* d, const char * key);
dict_t* dictrm(dict_t* d, const char * key);
dict_t* dictrm(dict_t* d, const char * key);
dict_t* dictrm(dict_t* d, const char * key);
dict_t* dictrm(dict_t* d, const char * key);
dict_t* dictrm(dict_t* d, const char * key);
dict_t* dictrm(dict_t* d, const char * key);
dict_t* dictrm(dict_t* d, const char * key);
dict_t* dictrm(dict_t* d, const char * key);

而文件中的每个函数只有一个声明。我不知道它是什么,因为每一行打印的重复次数不一样,所以它不可能只是一个循环……

EN

回答 1

Stack Overflow用户

发布于 2015-10-16 03:22:45

因为您没有在匹配正则表达式时使print命令有条件。试试这个:

代码语言:javascript
复制
perl -ne '/([\w*]+\s+[\w*]+\s*\(.*?\))/i and print $1 . ";\n"' dict3.c
# .......................................^^^

对于每一行,您都会打印上次成功匹配的匹配文本。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33156526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档