[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[格式转换] awka - 把 awk 脚本转换成 c 源码

awka 可以把 awk 脚本转换成 c 源代码,然后可以通过 gcc 等工具编译成 exe。

编译成 exe 其中一个好处是能够提高代码运行速度。(我测试了一个 awk 代码,用 gawk 执行需要 8 秒钟,编译后只要 3 秒)

配置步骤:


示例:
批处理如何按列进行数据分解? 这个帖子中的 awk 代码为例。awk 代码是:
  1. gawk "{ for (i=2; i<=NF; i++){print $1 \"\t\" $i >f i-1 \".txt\"} }" f="a_" a.txt
复制代码
以下保存为 test.awk:
  1. f="a_" { for (i=2; i<=NF; i++){print $1 "\t" $i >f i-1 ".txt"} }
复制代码
最后执行:
  1. awka -f test.awk >test.c
  2. gcc -Os -s test.c -o test.exe libawka.a
  3. 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

这个好
学习了
回头安装一个gcc试试

TOP

返回列表