标题: [格式转换] awka - 把 awk 脚本转换成 c 源码 [打印本页]
作者: tmplinshi 时间: 2013-5-20 03:02 标题: awka - 把 awk 脚本转换成 c 源码
awka 可以把 awk 脚本转换成 c 源代码,然后可以通过 gcc 等工具编译成 exe。
编译成 exe 其中一个好处是能够提高代码运行速度。(我测试了一个 awk 代码,用 gawk 执行需要 8 秒钟,编译后只要 3 秒)
配置步骤:
示例:
以 批处理如何按列进行数据分解? 这个帖子中的 awk 代码为例。awk 代码是:- gawk "{ for (i=2; i<=NF; i++){print $1 \"\t\" $i >f i-1 \".txt\"} }" f="a_" a.txt
复制代码
以下保存为 test.awk:- f="a_" { for (i=2; i<=NF; i++){print $1 "\t" $i >f i-1 ".txt"} }
复制代码
最后执行:- awka -f test.awk >test.c
- gcc -Os -s test.c -o test.exe libawka.a
-
- rem 以上两行可以用 CompileAWK.bat test 代替。
复制代码
test.exe 的使用方法是 test.exe a.txt。或者去掉 test.awk 中的 f="a_",编译后则使用 test.exe f="a_" a.txt。
==================================================================
编译后的 exe 体积是 158 KB。用 tcc 编译可能会更小,测试了下会报错:
E:\我的文档\桌面\awka>tcc -o o.exe libawka.a test.c
tcc: error: undefined symbol 'awka_error'
tcc: error: undefined symbol '_awka_getdval'
tcc: error: undefined symbol '_awka_setdval'
tcc: error: undefined symbol '_awka_getsval'
tcc: error: undefined symbol '_awka_getreval'
tcc: error: undefined symbol 'awka_setsval'
tcc: error: undefined symbol '_awka_arg_change'
tcc: error: undefined symbol 'a_bivar'
tcc: error: undefined symbol '_awka_usefnvar'
tcc: error: undefined symbol '_awka_addfnvar'
tcc: error: undefined symbol 'fs_or_fw'
tcc: error: undefined symbol '_awka_re2s'
tcc: error: undefined symbol '_rebuild0'
tcc: error: undefined symbol '_rebuild0_now'
tcc: error: undefined symbol '_awka_setdol0_len'
tcc: error: undefined symbol '_rebuildn'
tcc: error: undefined symbol 'awka_getline'
tcc: error: undefined symbol 'awka_vardblset'
tcc: error: undefined symbol 'awka_tmp_dbl2var'
tcc: error: undefined symbol 'awka_strconcat3'
tcc: error: undefined symbol 'awka_doln'
tcc: error: undefined symbol 'awka_arg1'
tcc: error: undefined symbol 'awka_print'
tcc: error: undefined symbol 'awka_postinc'
tcc: error: undefined symbol '_max_base_gc'
tcc: error: undefined symbol '_max_fn_gc'
tcc: error: undefined symbol 'awka_initgvar'
tcc: error: undefined symbol '_awkafn'
tcc: error: undefined symbol 'awka_init'
tcc: error: undefined symbol '_dol0_used'
tcc: error: undefined symbol 'awka_exit'
tcc: error: undefined symbol 'awka_arraysplitstr'
tcc: error: undefined symbol '_dol0_only'
tcc: error: undefined symbol '_awka_dol0'
http://bcn.bathome.net/s/tool/index.html?key=awka
作者: Python 时间: 2013-5-20 09:00
这个好
学习了
回头安装一个gcc试试
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |