linux+shell编程 笔记 awk
来源:互联网 发布:域名含义 编辑:程序博客网 时间:2024/05/27 20:41
1、awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。
awk的处理文本和数据的方式:它逐行扫描文件,从第一行到最后一行,寻找匹配的特定模式的行,并在这些行上进行你想要的操作。如果没有指定处理动作,则把匹配的行显示到标准输出(屏幕),如果没有指定模式,则所有被操作所指定的行都被处理。
2、awk中$0代表整行,$n代表分开的列。
3、AWK代码结构:通常情况下,awk针对每一个输入行执行一段代码块。但是有时,需要在awk开始处理输入前执行一些数据的初始化(如字段分隔符的设置),对于这样的需求,awk定义了BEGIN代码块(在BEGIN代码块完成awk部分参数的初始化操作);awk 还定义了END代码块,它是在所有的输入都处理完成后awk运行的代码(如做信息统计和数据打印)。
awk的运行可看成3部分组成:处理输入前的初始化、处理输入过程、处理完所有输入后的扫尾工作。
BEGIN实例:
BEGIN{ FS=":"}{ print "USER: "$1 "\tSHELL: "$7}
END实例:
BEGIN{ print "How many people with pan?"}/pan/{++a} (模式匹配操作,/正则表达式/{匹配后的操作})END{ print "'pan' appears " a " times."}
4、变量
awk中有两种变量:内建变量和用户自定义变量
awk变量使用无需先声明,在第一次使用该变量的时候,自动建立变量。awk的变量在建立时的初始值是空字符串,但是当需要数值时,可以视为0。即awk会自动将字符串转换为数值进行计算。【awk的变量名称是大小写敏感的。】
内建变量:
FILENAME:当前输入文件的名称
FNR:当前输入文件的记录数
FS:字段分割符(默认为空格)
NF:当前记录的字段数
NR:当前记录数
OFS:输出字段分隔符
ORS:输出记录分割符(默认为换行符)
RS:输入记录分隔符(默认为换行符)
ERRNO:最后一耳光系统错误的描述
ENVIRON:环境变量关联数组
5、数组
awk允许在数组名称之后,以方括号将任意数字或字符串表达式括起来作为索引。
awk的数组也无需声明,数组的存储空间在引用新元素时会自动增长,数组的存储空间是稀疏的。
当元素不再需要时,其存储空间可以回收再利用。delete array[index]会从数组中删除元素,而delete array会删除array数组中的所有元素。(注:delete删除数组元素时,不会删除它的名称。)
6、环境变量
awk支持直接对系统环境变量的访问,通过ENVIRON数组。
awk 'BEGIN{print ENVIRON["HOME"];print ENVIRON["PATH"]}'
7、用户自定义函数
所有用于函数体内部且未出现在参数列表中的变量,awk都将其视为全局性变量。
awk允许被调用函数中的参数比函数定义里所申明的参数还要少,这样额外的参数被视为局部变量。对于这类变量,一般将它列在函数参数列表中,并且在自首前置一些额外的空白。这个额外的参数如同awk里的其它变量一样吗,在函数内容中被初始化空字符串。
值传递和地址传递:在C语言中,因为有指针操作符和取址操作符,所以可以直接对变量进行地址传递。在awk中的数组则默认认为是地址传递,而普通变量则为值传递。
// 地址传递,函数定义function swap(array, temp){ temp = array[1] array[1] = array[2] array[2] = temp}{ array[1] = 2 array[2] = 3 printf("array[1]: %d------array[2]: %d\n", array[1], array[2]) swap(array) printf("array[1]: %d------array[2]: %d\n", array[1], array[2])}
- linux+shell编程 笔记 awk
- SHELL学习笔记——awk编程
- shell编程笔记-文本处理awk
- shell编程笔记-文本处理awk
- linux shell编程awk、sed调用方法
- Linux Shell常用技巧(五) awk编程
- Linux Shell编程二:sed&awk
- Linux学习---shell编程(08-awk)
- Day10-Linux-awk和shell编程初步
- linux Shell编程笔记
- Linux Shell 编程笔记
- linux shell 编程笔记
- Linux Shell编程笔记
- Linux Shell编程笔记
- linux shell 编程笔记
- Linux下Shell编程——awk编程
- Linux下Shell编程——awk编程
- Shell编程-awk
- 服务器端开发调试心得
- 软件的三层架构
- Fiddler (五) Mac下使用Fiddler
- Unity3d Free【IOS Android WP8 Xbox】
- 在Ubuntu上为Android增加硬件抽象层(HAL)模块访问Linux内核驱动程序 (学习老罗的)
- linux+shell编程 笔记 awk
- ffmpeg在cygwin中的编译与链接
- C#中的关键字
- 制作iOS Ad-Hoc测试应用
- 从一个疯狂下载者变成学习者
- [C#基础教程]之快速了解c#中的索引器及与属性区别
- linux下查找某个文件
- 自定义汉字与ASCII值转换
- Excel插入sql 2000中