以前在也有使用过AWK,不过停留在print的基础上.
最近有要处理些数据.
就用到了动态数组, printf函数.
不过现在需要把两个文件像数据库一样连接起来.第一个想法是join命令.但是既然用了AWK顺便看下AWK能不能处理这种情况.
第一感觉是awk一次只能处理同样格式的文件.
网上搜了一下:发现有两个方案来处理两个文件的.
1. 使用NR和FNR比较. 这个方案我的理解是可以处理两类不同格式的文件.
2. 使用ARGIND参数. 这个方案可以区分多个不同格式的文件.
处理多个文件时还可以利用FILENAME参数,来识别文件名.
AWK的工具箱:
1.正则匹配
2.动态数组
3.内置参数
4.使用--re-interval命令行参数启用支持正则表达式的[0-9]{3,5}的模式.
6.原来以为prin不能换行,现在发现实际是支持换行的. 原来用printf把20多个参数写在一行上, 格式字符都快把眼看瞎了.
7. awk 自定义函数时,函数内部的变量默认是全局的,若要定义局部变量,需要在参数列表中声明参数, 局部变量参数和函数参数之间用几个空格分割开.
8. print也可以使用重定向符号。所以可以同时输出几个文件。
9. awk 'NR==7,NR==15' file: 输出7-15行,而不是输出第7行和第15行
待续