AWK学习笔记—从C语言的角度考虑AWK
从C语言的角度考虑AWK—AWK学习笔记
最近了解脚本,学习到了awk,感觉awk还是神似C语言,作为C语言常用者,如果使用到awk来处理数据,上手应该是比较快速了。
首先说下,为什么使用awk。第一:awk写出来的数据处理,可移植性强。第二;awk比较简单,用C语言来处理脚本,你可能要写代码,断点调试,折腾一天,或者是一个下午,但是用awk,你一两个小时就可以搞定一个脚本。也许你会说,awk写出来的脚本绝对要比C/C++处理数据慢,是滴,这一点我们要承认,但是据网上大牛们的测试,发现,其实awk处理数据也不是我们想象那么慢,如果你真的感觉速度慢的话,可以先用awk实现了思想,回头来写C的代码,也是很好的一个提高效率的方法。
为什么说要在C语言的角度来考虑awk脚本呢?因为身为脚本语言的awk,和C语言有很多相似之处。
1. awk中的变量
我们知道C语言中变量属于强定义语言。但是awk身为脚本,就有了脚本的特性:若定义语言,一个遍历,不用定义,拿来就可以用,而且初始值为空(或者是0)。那么一个变量,你可以认为它是float、string 等等。这里有一点,若定义语言其实也分字符和数字的,例如“123”,123是截然不同的两个变量,但是他们转换又是非常简单s = “123” # 此处是字符串。n = 0 + s ,这样n就成了数字123 。
2. awk中的数组
说道awk中的数组,可能有些特殊了,awk允许你用字符串作为下标。使用C语言的同学看到这一点也许就会笑了,这个特性岂不是牺牲效率换来的?其实如果你仔细去看gawk的源代码就会发现,gawk中数组的实现还是蛮复杂的,array_init()就可以看到,其中array下标的操作以及实现使用了hash算法。还是满巧妙的。
Awk支持使用for (iggy in foo),这个令awk的实现负责了不少。
3. awk中的数值运算符
awk支持C语言中的大部分数值运算符:++ — ^ ! 等等
4. awk中的语句
回车识别语句结束,C语言中是分号了,如果你想把多条语句写到一行上就用分号隔开。
awk同样支持分支语句,用法和C语言中一样。当然啦还有循环,while ,do while for 等 这些都和C中用法一样。
5. 其他
awk中同样需要交互性操作:输入和输出。
其中输入可以接受用户键盘输入和重定向输入。Getline
输出的话就比较多了,可以使用print 和 printf函数,其中printf的使用方法和C语言中一样。

你写的这是啥啊
支持楼主,拜读,不错
来看看,支持一下博主,文章不错哦。学习了。
不错,学习了。