提取字符串

houzhenghui123 2013-01-26 12:06:35
比如字符串
-define(_LANG_MAX, 1101).
提取_LANG_MAX,使用脚本怎么做,想要的结果是直接存到变量里面
...全文
101 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
houzhenghui123 2013-01-26
  • 打赏
  • 举报
回复
具体是这样的,一个头文件里面包含大量的这种宏定义.... 现在需要从这个头文件里面读取所有的宏定义,只取-define(_LANG_MAX, 1101)->_LANG_MAX
personball 2013-01-26
  • 打赏
  • 举报
回复
如果宏定义数量不多的话,也可以对erl文件进行一次循环, 建立所有宏名的数组A 每遍历一个erl文件,就把存在的宏名从A中剔除, 这样遍历所有erl以后,还剩下的宏名就是未使用的。
personball 2013-01-26
  • 打赏
  • 举报
回复
你的脚本相当于,对于每个宏定义,都要遍历所有erl文件,查明不存在,则删除宏定义。这样肯定慢的 你换个思路,先把所有宏名记下来,然后查的时候,检测到某个宏名存在,则停止搜索,并进行标记,然后去查下一个宏名是否存在。最后检查没标记的宏名 即可全部删除。
personball 2013-01-26
  • 打赏
  • 举报
回复
引用 7 楼 houzhenghui123 的回复:
引用 6 楼 personball 的回复:引用 5 楼 houzhenghui123 的回复:引用 3 楼 morris88 的回复:perl -pe "print $1 if (/-define\((.*?),\s*1101\s*\)/)" somefile.h 这个是其中一条匹配的结果-define(_LANG_MOD_CHAT_GM_PET_LEVEL_FALS……
宏定义有多少? .erl 文件有多少?
houzhenghui123 2013-01-26
  • 打赏
  • 举报
回复
引用 6 楼 personball 的回复:
引用 5 楼 houzhenghui123 的回复:引用 3 楼 morris88 的回复:perl -pe "print $1 if (/-define\((.*?),\s*1101\s*\)/)" somefile.h
这个是其中一条匹配的结果-define(_LANG_MOD_CHAT_GM_PET_LEVEL_FALSE, "GM:坑GM呀,不带这样等级的").……

这样可以但是:

我想删掉头文件中,不用的宏定义...但是我看了下头文件没有什么效果
并且这个脚本执行的速度太慢了....大概有10多个这样的头文件.......
personball 2013-01-26
  • 打赏
  • 举报
回复
引用 5 楼 houzhenghui123 的回复:
引用 3 楼 morris88 的回复:perl -pe "print $1 if (/-define\((.*?),\s*1101\s*\)/)" somefile.h
这个是其中一条匹配的结果-define(_LANG_MOD_CHAT_GM_PET_LEVEL_FALSE, "GM:坑GM呀,不带这样等级的").
现在只想要_LANG_MOD_CHAT_GM_P……


这样?
houzhenghui123 2013-01-26
  • 打赏
  • 举报
回复
引用 3 楼 morris88 的回复:
perl -pe "print $1 if (/-define\((.*?),\s*1101\s*\)/)" somefile.h
这个是其中一条匹配的结果-define(_LANG_MOD_CHAT_GM_PET_LEVEL_FALSE, "GM:坑GM呀,不带这样等级的"). 现在只想要_LANG_MOD_CHAT_GM_PET_LEVEL_FALSE
houzhenghui123 2013-01-26
  • 打赏
  • 举报
回复
引用 2 楼 personball 的回复:
引用 1 楼 houzhenghui123 的回复:具体是这样的,一个头文件里面包含大量的这种宏定义.... 现在需要从这个头文件里面读取所有的宏定义,只取-define(_LANG_MAX, 1101)->_LANG_MAX 取 -define( 和 , 1101) 之间的部分?
只取“和”
morris88 2013-01-26
  • 打赏
  • 举报
回复
perl -pe "print $1 if (/-define\((.*?),\s*1101\s*\)/)" somefile.h
personball 2013-01-26
  • 打赏
  • 举报
回复
引用 1 楼 houzhenghui123 的回复:
具体是这样的,一个头文件里面包含大量的这种宏定义.... 现在需要从这个头文件里面读取所有的宏定义,只取-define(_LANG_MAX, 1101)->_LANG_MAX
取 -define( 和 , 1101) 之间的部分?

19,612

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧