原文地址: http://www.lupaworld.com/home-space-uid-35711-do-blog-id-19774.html
awk
调用:
2.将awk命令插入一个文件,并使awk程序可以执行,然后用awk命令解释器作为脚本首行。
3.将所有awk命令插入一个单独文件
模式和动作
模式:两个特殊断 BEGIN和END
动作:实际动作大多在{}内指明
域和记录
浏览域表记为 $1,$2,......$n($1-$n称为域标识)
输出
1.抽取域
2.保存输出
3.使用标准输出
4.打印所有记录
5.打印单独记录
6.打印报告头
7.打印结尾
条件操作符
1.匹配
2.精确匹配
使用等号 ==
3.不匹配
!~
4.小于
if($6 < $7)
5.小于等于
6.大于
7.设置大小写
8.任意字符
9.或关系匹配
10.行首
11.AND &&
12.OR ||
内置变量:
设置输入域到变量名
域值比较操作
修改改数值域取值
修改文本域
只显示修改改记录
创建新的输入域
增加列值
文件长度相加
内置的字符窜函数
gsub(r,s) 在整个$0中用s替代r
gsub(r,s,t) 在整个t中用s替代r
index(s,t) 返回s中字符串t的第一位置
length(s) 返回s长度
match(s,r) 测试s中是否包含匹配r的字符串
split(s,a,fs) 在fs上将s分成序列a
sub(s, ) 用$0中最左边也是最长的字符串替代
subtr(s,p) 返回字符串s中从p开始的后缀部分
substr(s,p,n) 返回字符串s中从p开始长度为n的后缀部分
1.gsub
2.index查询字符串s中t出现的第一位置
3.length
4.match (在ANCD中查找C的位置)
5.split
6.sub 只能替换指定域的第一个0
7.substr 按照起始位置及长度返回字符串的一部分
字符串屏蔽序列
/b 退格键
/f 走纸换页
/n 新行
/r 回车
/t tab
/c 任意其他特殊字符
/ddd 八进制
很简单的例子
输出函数printf(注意是printf不是print,两者效果不同的)
printf函数拥有几种不同的格式化输出功能
printf修饰符
- 左对齐
Width 域的步长0表示0步长
.prec 最大字符串长度,或小数点右边的位数
awk printf格式
%c ASCII字符
%d 整数
%e 浮点数,科学计数法
%f 浮点数
%g awk决定使用哪种浮点数转换,e或者f
%o 八进制数
%s 字符串
%x 十六进制数
1.字符串转换
2.格式化输出
3.向一行awk命令传值
4.awk脚本文件 (在文件名字后面加后缀.awk方便区分)
例子:
5.在awk中使用FS变量。
上述例子指定了FS变量(分隔符)为":"
awk数组
数组使用前,不必定义,也不必数组元素的个数,经常使用循环来访问数组。
循环类型基本结构
For (element in array) print array [element]
例:
数组和记录
例:
一个studentest.txt文件,内容如下:
接下来是测试脚本belt.awk
运行
belt.awk studentest.txt
此例用到2出循环,用于统计student数量和clolour数量。