+ -
当前位置:首页 → 问答吧 → 学嵌入式,必须多实操

学嵌入式,必须多实操

时间:2011-07-20

来源:互联网

需要一个从源文件中提取 #include 的字符串, 自己折腾了个
代码:
mawk '/^[ \t]*#[ \\t]*include[ \t]*(<[^>]+>|"[^"]+")/ {sub(/^[ \t]*#[ \t]*include[ \t]*/, "");if(match($0, /(<[^>]+>|"[^"]+")/)) print substr($0, RESTART, RLENGTH)}' /usr/include/stdio.h


居然输出
引用:
<features.h
<stddef.h
<bits/types.h
<libio.h
<stdarg.h
<bits/stdio_lim.h
<bits/sys_errlist.h
<getopt.h
<bits/stdio.h
<bits/stdio2.h
<bits/stdio-ldbl.h


到底什么问题啊, 换 gawk 的话就会正常
不考虑 gawk, mawk 比 gawk 快太多了
mawk 有这么严重的bug?

能否用 sed 实现, 能的话能否给个例子

作者: fanhe   发布时间: 2011-07-20

awk的高手啊。
只是别太固执,多学一门脚本吧。

作者: eexpress   发布时间: 2011-07-20

eexpress 写道:
awk的高手啊。
只是别太固执,多学一门脚本吧。


我本来是用python实现的, 测了一下速度, 比 awk 慢一倍左右
gawk 比 python 的还要慢啊...

而事实上, 在解析器里面跑, python 的还是要比调用外部程序要快

现在这个用不着了, 我对 awk 也失望了
乱七八糟的正则, 搞到人斯巴达

作者: fanhe   发布时间: 2011-07-20

sed -r -n "/#include(<.*>)/ {s/#include(<.*>)/\1/;p}" xxxxxxxxxxx

作者: jarlyyn   发布时间: 2011-07-20

fanhe 写道:
eexpress 写道:
awk的高手啊。
只是别太固执,多学一门脚本吧。


我本来是用python实现的, 测了一下速度, 比 awk 慢一倍左右
gawk 比 python 的还要慢啊...

而事实上, 在解析器里面跑, python 的还是要比调用外部程序要快

现在这个用不着了, 我对 awk 也失望了
乱七八糟的正则, 搞到人斯巴达


正则其实还是不难的,恩恩

当年写mud机器人搞过几年正则的飘过

作者: jarlyyn   发布时间: 2011-07-20

热门下载

更多