awk
文章平均质量分 51
woshiyilitongdouzi
这个作者很懒,什么都没留下…
展开
-
gawk1.01源码分析08
gawk1.01源码分析08还有一个小时就要干活了。一直在断断续续的读gawk101的源码,我原来一个同事,特别会写awk脚本,我比不上他。我想,我要超过他,就只能读源码了。在项目组干活时,有一天,我忽然想读开源的源码,我不太会搜索,请项目经理帮我找开源软件,他帮我找到了sed的源码,当时真时读得想吐,其中遇到getopt函数,根本就看不懂。于是我放弃了。后来,自己就找到了gawk101的源码。因为我对awk熟悉一些。我比较喜欢看书,因为perl的作者说,他是因为遇到一个问题,用awk解决不了,于是原创 2020-10-13 10:15:34 · 130 阅读 · 1 评论 -
分享我修改后的一些源码
分享我修改后的一些源码我有时觉得现在的时代真好。有电脑可以用,有书可以读。而且有那么多的开源代码可以供自己研究。我想,或许,这就是我们真正的天堂了。我原来学习时,偏重于读书,很少写代码,导致自己水平一直不高,现在我改变思路,以读源码为主,以写代码为辅助,再辅以之读书,感觉水平在慢慢上升。因此,我把自己觉得好的代码,就上传上去,让后来的人有一些帮助。因为有的人,可能没想过读源码,因为在win1...原创 2020-03-23 08:37:01 · 365 阅读 · 0 评论 -
如何在大脑中模拟代码运行
如何在大脑中模拟代码运行昨天,终于在笔记本上安装好了ubuntu,这次没有使用虚拟机。这样,可以在ubuntu中使用图形界面相关功能了。在win10下通过wsl使用ubuntu,不能使用图形界面,感觉功能很受限。心里一想起这事,就觉得很兴奋。但睡在床上,不想起床,于是就把自己读过的代码在大脑中进行回忆。我比较喜欢的是oz写的grep程序,因为有一本书《精通正则表达式》,这本书,讲得很透,我...原创 2020-03-23 07:53:31 · 510 阅读 · 0 评论 -
gawk1.01源码分析——进行调试2
gawk1.01源码分析——进行调试2今天读代码时,发现我对awk2.c中如何生成解析树的过程还是很模糊。于是想上网搜索资料。发现没有。于是,心想,没人写,那我就再接着写吧。不指望有多少人看,就当成是把自己分析源码的心得、想法进行总结。就当写日记一样。以前读源码,因为编译不了,总是纸上谈兵,但读着读着,发现不行。因为我无法验证我的理解对不对?而且也没有人和我交流,那不行。还是要把程序编译成功...原创 2020-03-08 10:50:02 · 139 阅读 · 0 评论 -
gawk1.01源码分析——进行调试
gawk1.01源码分析——进行调试因为疫情之故,天天在家。前段天天读小说,后来,觉得,还是读源码,至少让精力有地方发泄。于是,又重新读源码。虽然很久没读,但发现,以前读过,现在再读,还是有种熟悉的感觉。但,发现光读代码,而代码跑不起来,没有感觉。还是要把代码编译,测试,再修改,再编译,执行后看修改是否产生的效果。因此,又捡起原来曾编译通过的代码。再开始。./gawk --version...原创 2020-03-08 10:27:35 · 93 阅读 · 0 评论 -
gawk awk3.c源码分析
gawk awk3.c源码分析本来昨天要完成的,昨天晚上睡得太早,就忘记了,今天打开电脑,第一件事,就是把这篇完成。这个文件主要完成一些内部函数的定义。先定义了一些外部变量,就于对应awk程序中的NF,FS,RS,NR,FILENAME,OFS,ORS,OFMT之类。inin_vars() 这个函数主要用于完成对NF,FS,RS,NR,FILENAME,OFS,ORS,OFMT变量的...原创 2019-12-22 08:59:54 · 163 阅读 · 0 评论 -
gawk awk1.c源码分析
gawk awk1.c源码分析今天接着读代码。前段时间迷上读网络小说,用kindle看小说,看得天昏地暗。读小说锻炼了阅读速度。星期五购买了几件打折的衣服。我要好好读代码,把购衣服的价值创造出来。言归正传。我用一台旧的笔记本不上网,只用于在上面写代码。因为上面只有gawk的源码,没有拷coreutils的源码,所以就读gawk的了。今天看的时候,感觉把这篇基本全部看懂了。个别细节也懂了。下...原创 2019-12-21 19:23:08 · 245 阅读 · 0 评论 -
gawk1.01源码awk3.c分析
gawk1.01源码awk3.c分析我一边读源码,一边把自己的一些想法写出来。我的笔记本外接了一个显示器。init_vars() 这个过程,对FS,NF,RS,NF,FILENAME,OFS,ORS,OFMT几个变量进行初始化。 其过程很有意思, FS_node=spc_var("FS",make_string(" ",1)); spc_var("FS",make_string...原创 2019-11-07 10:31:58 · 220 阅读 · 0 评论 -
gawk1.01源码分析——各文件功能
gawk1.01源码分析——各文件功能今天就各个文件的基本功能谈下我的理解。一、awk.h头文件先列出数据结构typedef struct hashnode HASHNODE;struct hashnode { HASHNODE *next; char *name; int length; ...原创 2019-11-07 09:52:56 · 122 阅读 · 0 评论 -
gawk1.01源码分析awk.y冲突了
gawk1.01源码分析awk.y冲突了yang@DESKTOP-V9HS3B6:~/gawk101/gawk$ echo "hello:ok" | ./gawk 'BEGIN { FS=":"}> {print $1,$2}'hello ok看到没,单独是可以执行的。但把awk指令写到文件中,再测试一下,其中t.awk内容如下:yang@DESKTOP-V9HS3B6:~/ga...原创 2019-11-06 11:01:24 · 111 阅读 · 0 评论 -
gawk1.01源码大体结构分析
gawk1.01源码大体结构分析昨天找gawk的选项,因为我想分析其调试过程。我想根据其debug的过程,来分析程序。发现在awk1.c中有-D选项,试一下,结果出现一大堆:yang@DESKTOP-V9HS3B6:~/gawk101/gawk$ echo "ok" |./gawk '{print $0}'okyang@DESKTOP-V9HS3B6:~/gawk101/gawk$ ech...原创 2019-11-05 07:06:54 · 96 阅读 · 0 评论 -
编译成功的gawk1.01源码上传了
编译成功的gawk1.01源码上传了世界上最幸福的事,就是把代码编译成功了。然后一个屏幕对代码进行编辑,另一屏幕,进行测试,立即看到效果。太爽了。今天,我把gawk1.01编译成功,我开始进行一些简单的测试,如从内置函数开始。如何测试呢?yang@DESKTOP-V9HS3B6:~/gawk101/gawk$ ./gawk 'BEGIN {print 2+3}'5yang@DESKTOP...原创 2019-11-04 18:36:29 · 96 阅读 · 0 评论 -
gawk1.01源码安装 续
gawk1.01源码安装 续今天是个好天气,我昨天发现有冲突,看了会书,还是不得要领,今天把冲突进行研究,发现Option 1, statements -> <Rule 24, tokens 2 .. 5> statements -> <Rule 22, empty>Option 2, statements -> <Rule ...原创 2019-11-04 17:57:04 · 211 阅读 · 0 评论 -
gnu awk1.01源码编译安装——续
gnu awk1.01源码编译安装——续这个双休日又把时间耗在了gawk1.01的编译安装了,我原来好象曾编译过,但当时对代码的理解不深刻,编译过后,就没如何读代码了。而且我的机器环境又多,当时好像是在windows下安装bison,不知如何在ubuntu下编译成功了。今天接着开始在ubuntu下安装。还是像原来一样,报了无数的错误,因为根本生成不了可执行程序,于是,我就把gcc进行降级安装...原创 2019-11-04 06:57:16 · 672 阅读 · 0 评论 -
从awk到perl,ruby
从awk到perl,ruby昨天看电脑时间长了,今天眼睛疼,于是就只能回忆代码了。所以不停的回忆数据结构的内容。昨天读rubygem algorithms0.0.1中tree_map后,其实好象是红黑树,于是我就把数据结构的内容好好回忆。红黑树没学过。先要学习下,再试着读其中的C代码了。忽然想到,数据结构中,讲到线性表时,如果用数组实现顺序表,其中结构定义如下:STRUCT ARR{I...原创 2019-10-09 21:09:02 · 214 阅读 · 0 评论 -
gnu gawk源码阅读
gnu gawk源码阅读谈分析,有些太夸大了。还是说阅读吧。awk1.c,awk.y基本看了个大概。但awk2.c就有些完全不懂了。先是通过awk.y,bison把程序读后,写进语法树里。再在awk2.c中有一个函数来解析这个语法树,生成结果。这个解析过程,就不懂了。awk3.c基本也看了,好象因为在awk中有很多内置变量,象FS,NR,OFMT等,作者的方法是,先生成很多全局NODE,...原创 2019-02-27 09:33:32 · 207 阅读 · 0 评论 -
oz grep源码阅读
oz grep源码阅读昨天添加了一个usb转vba的接口,把win10的笔记本转成三屏显示,真是爽呀。笔记本小了方便携带,但如果在家的话,还真是小了。真幸福呀。早上起床,开始读代码。打开oz写的grep源码,能把代码全部看懂的感觉很爽。现在,我对处理[a-z]的这段代码没明白。因为作者用一个16字节的位来存储字符集,每个位代表一个字符。static CHAR bittab[BITBLK...原创 2019-02-27 09:13:39 · 308 阅读 · 0 评论 -
gawk1.01 编译
今天再谈谈感想。笔记本装的win10,今天再搭环境,争取把gawk1.01编译出来,再下载mingwstudio,这个软件,再下载bison,然后再编译,编译时报错,好象bison路径有空格。于是,重新安装bison,再编译,结果ok。把gawk1.01编译了,再读代码就爽了。总体感觉,读老版本代码,是正确的选择,读新版本,性价比不够高。读代码时,发现自己的C语言学得不够好。于是还要再学C,尤其是...原创 2018-05-07 20:19:37 · 208 阅读 · 0 评论 -
gawk1.01 regex.c 源码分析2
先分析regex.c这个文件,因为我想弄明白,到底谁负责资源的释放。re_compile_pattern负责把正则表达式翻译为内部格式。p指向正则表达式,p_end指向正则表达式的末尾。有一个大循环while (p 《》p_end) 获致p 当前所指字符到c 如果c='$' 把'endline'推进去。 如果c='^' 把'begline'推进去。 如果c='*','+','?' 设置两个变...原创 2018-05-07 21:44:30 · 180 阅读 · 0 评论 -
读gnu代码有感想
熟读最早版本代码,不会写程序也学会了想读linux代码,就是0.11版,我也看不懂,那个汇编看不懂,那个与硬件打交道也看不懂。所以,舍而求其次,读gnu下各个命令的代码,读C标准库的代码。但读最新版本的,量太大,所以读最古老版本的。量小,但也不好读,读着读着,就有了疑问。读代码,就象在黑暗中摸索,这种拔剑四顾心茫然的感觉,很是无奈。别人30多年前的代码,在条件这么优越的今天,你还读不懂,说出来,有...原创 2018-05-07 22:41:42 · 147 阅读 · 0 评论 -
gnu coreutils源码感悟——小说,代码,人生
gnu coreutils源码感悟——小说,代码,人生好久没写博客了,今天写写。前一段时间,读网络小说《官策》,读得天昏地暗,我心太急,恨不得马上读完。读得眼睛都睁不开了,小说太吸引人了。今年,过年抱着试试的态度,买了个笔记本,上面装的win10,有个ubuntu的内置应用,上面可以写shell,太爽了。以前用那个cygwin时,总遇到到在windows中,是\n\r,而unix是\n的问题,现在...原创 2018-06-21 11:08:23 · 543 阅读 · 0 评论 -
gawk1.1源码分析01
gawk1.1源码分析01因为ruby0.49的代码量较多,而且其正则表达式的算法和gawk的很像。于是,觉得还是先看gawk吧。毕竟对gawk也较熟悉,语言也较少,代码也少。应该是先有awk,perl,ruby等语言,先从源头来理解吧。但昨天编译gawk1.1总是不成功。甚至修改awk.y还是不行。加上stdlib.h等头文件又与其自身的malloc等文件冲突,于是看自己以前是如何编译的。自...原创 2019-01-13 10:45:10 · 163 阅读 · 1 评论 -
gawk1.1源码分析02
gawk1.1源码分析02又开始学《flex与bison》这本书,今天发现按书上说的,去把书上的示例代码下载下来吧,如wget ftp://ftp.iecc.com/pub/file/flexbison.zipunzip flexbison.zip哈哈,原来上面真有源码,这可省掉了敲击代码的时间。真爽吧。我把笔记本按到eizo显示器上,再把ubuntu显示到eizo上,用tmux进行分屏...原创 2019-01-13 12:07:17 · 204 阅读 · 0 评论 -
gawk1.1源码分析03
gawk1.1源码分析03下午把awk1.c,awk2.c等文件翻了一下,其中重点看了awk1.c,对其中流程有一个大致了解,作者没有有getopt进行命令行选项的分析,而是自己手工写的。用./gawk -d '{print $1}' ./gawk -d '{print $1}' test.1(3) 0x620644 = left<--(0x62065c PRINT.48)(...原创 2019-01-13 18:02:27 · 112 阅读 · 0 评论 -
gnu gawk1.0源码分析……大致看懂了
gnu gawk1.0源码分析……大致看懂了最近过年,天天吃喝,没看代码,总觉得好象虚度了光阴。于是,今天又开始读源码。gawk能编译成功后,读代码就容易了。但因为牵涉到bison,而bison又不熟悉。为此,先读awk.y,通过反复读这个文件,终于对awk的语法更熟悉了。因为awk.y写得太好了,其中如何进行语法分析,写得相当精彩。start : program;program : r...原创 2019-02-11 20:31:11 · 279 阅读 · 0 评论 -
读gawk中正则表达式包
读gawk中正则表达式包好几天没写博客了,感觉好象欠债没还一样。让人很是有种负罪感。前几天冥想代码,感觉很有收获。就一股脑的回忆,把大脑当机器,在脑中执行代码。直到彻底理解。先回忆,oz写的grep中正则表达式的源码,因为是nfa原理,感觉除了位操作相关的代码外,真是看懂了。有了基础后,看gawk中regex.c,没看懂。于是看几篇介绍dfa的文章,https://blog.csdn.n...原创 2019-02-19 20:42:18 · 188 阅读 · 0 评论 -
gnu gawk1.01源码分析
gnu gawk1.01源码分析前段时间为了分析dfa实现正则表达式的源码,费尽心思。于是又转而读gawk的源码,这次发现竟然顺畅很多了,现在有一个关键的函数看不懂:interpret()程序把 awk -f mm.awk file1 file2 file3中mm.awk文件中的源码读入,进行解析后,存储一个变量expression_value如果有begin_block块,就用inte...原创 2019-02-19 21:04:17 · 138 阅读 · 0 评论 -
gnu gawk源码分析 关于程序中的英语
gnu gawk源码分析 关于程序中的英语我把gawk的源码过了一遍。现在看来,英语看不懂,是很影响读代码的效率的。昨天心想,找一个程序,把源码转为html格式,再用火狐浏览器打开,再用必应进行翻译。网上找了程序,找不到txt2html的类似软件,看到有人写了一个,模仿他的用sed写一个。把<变为&lt>变为&gt每行末加<p>开头<ht...原创 2019-02-25 22:01:21 · 74 阅读 · 0 评论 -
gawk 源码分析感想……感觉又有进步了
gawk 源码分析感想……感觉又有进步了这几天折腾设备,为了打造更好的电脑环境。买了usb转vga的设备,可显示时太慢了。于是,就还是用以前的电脑,打造双屏环境,一个显示用支架,高点放,另一个显示器放桌子上,当累了就坐,坐累了,就站。站着时,还可以坐在高板凳了。慢慢看gawk,这次又仔细读awk.h,因为其中的数据结构很重要,并把数据结构画出来,少在墙上,并把那些宏也抄下来。再看debug....原创 2019-03-01 19:36:55 · 191 阅读 · 0 评论 -
gawk源码分析……硬件环境搭建
gawk源码分析……硬件环境搭建今天终于把安装win10的笔记本虚拟出了三个屏幕。真爽。首先在网上买一个usb转vga的头子,再安装好。然后,写一个程序。 cat txt2html#!/bin/seds/</\&lt/gs/>/\&gt/gs/$/<p>/g1i\ <html>\ <body>$a\...原创 2019-02-26 20:26:52 · 124 阅读 · 0 评论 -
gnu gawk1.01源码分析 编译
gnu gawk1.01源码分析 编译我不停的在网上找gawk的分析文章,可惜硬是找不到了。前几天,就把gawk的使用进行系统的复习。基本上对gawk的使用算是入门了。但原理呢?还是看代码,读《flex 与bison》后,对awk.y这个文件基本有了了解,更可喜的是,在一台神舟的笔记本上,把程序编译通过了,那个本子上装的是win7 64位,但C编译器装的好象是另一个gcc,我也迷糊,反正就折腾。当...原创 2018-05-06 09:00:40 · 178 阅读 · 0 评论