awk 知识点
来源:互联网 发布:专升本c语言考试大纲 编辑:程序博客网 时间:2024/05/21 09:38
AWK的知识点积累
shell 脚本向awk 传递参数
1. shell 脚本中向awk 命令传递参数的简单例子:
num=$1 awk -F',' 'BEGIN{ for(i = 0; i < awk_num; i++) { a[i] = 0; } } { for(i = 0; i < awk_num; i++) { if($3%awk_num == i) { a[i]++; } } } END{ for(i = 0; i < awk_num; i++) { print i, "=", a[i]; } }' awk_num=$num test.txt本例中将shell中的变量num值传递给awk的awk_num变量
2. 简单的命令:
line_tmp=`expr 2 \* $line - 1` host_name=`cat $1|awk 'BGEIN{OFS="\t"}NR==awk_num,NR==(awk_num+1){print $1}' awk_num=$line_tmp` echo "$host_name" >> /home/zengtai.csm/.tmp/.check/result.txt
2. awk 打印指定行
- 打印 12--15行:
cat t112 bbbbbbbbbbb13 ccccccccccc14 aaaaaaaaaaa15 bbbbbbbbbbb16 cccccccccccawk 'BEGIN{print "line:13--15";}NR==13,NR==15{print $0}' t1 line:13--15cccccccccccaaaaaaaaaaabbbbbbbbbbb
3. awk printf()格式:
echo $1|awk -F"-" '{printf("%s-%s-%s %s:%s",$1,$2,$3,$4,$5)}'`
4. awk 的数组、循环
awk -F[\ :] '{s[$2]++}END{for(i in s){print i,s[i]}}' test.log2012-05-24 | sort -n
以 :冒号为间隔符,以文档第二个域作为数据的下标来统计第二个域进行分类并进行统计每一类出现的数量;最后再按大小进行排序输出
5. awk 正则表达式
cat ttcn1.test.ck3cn2.test.ck3cn3.test.ck3cn4.test.ck3cn5.test.ck3cn6.test.ck3cn7.test.ck3cn1.test.ck6cn2.test.ck6cn3.test.ck6cn4.test.ck6cn5.test.ck6cn6.test.ck6cn7.test.ck6
(1). 其中一个于满足几个条件
第一个域匹配正则表达式cn[0-3] 而且第三个域满足 ck[358] 结尾的打印出来
awk -F'.' '$1 ~/cn[0-3]/ && $3 ~/ck[348]$/{print $0}' tt ----> 正则表达式 与 输出正文 { } 之间没有 空格cn1.test.ck3cn2.test.ck3cn3.test.ck3
(2). 模式中只要是正则表达式就必须用 //来表示:而且可以有多个条件
awk -F'.' '/^(cn|so)/ && $1 ~/cn[0-4]/ && $3 ~/[358]$/{print $0}' tt cn1.test.ck3cn2.test.ck3cn3.test.ck3cn4.test.ck3
(3). 模式是关系表达式
cat ttt10:20:30:40:50:605:15:25:35:45:552:12:22:32:42:528:18:28:38:48:58
(4). 第一个域 能被 5整除,会打印此行的第三个于 + 12 和 第5个域 + 14 的值
awk -F':' '$1 % 5 == 0{print $3 + 12,$5+14}' ttt 42 6437 59
(5). awk 自定义输出格式
awk -F':' '$1 % 5 ==0{printf("%s-%s-%f-%d-%d\n",$1,$2,$3,$4,$5+11)}' ttt 10-20-30.000000-40-615-15-25.000000-35-56
- awk 知识点
- awk知识点全回顾
- awk
- awk
- AWK
- awk
- AWK
- awk
- awk
- AWK
- awk
- awk
- AWK
- awk
- awk
- awk
- awk
- awk
- 设计模式
- 为什么需要编译安装x86和arm版的qt-embedded
- Image is not displaying proper using OpenGL in android ndk
- 多维数据集的主动缓存(Proactive Caching)
- 这几天胃口不错。
- awk 知识点
- [leetcode] Best Time to Buy and Sell Stock
- 要总结掌握的知识
- Redis Primer(1)基于JedisPool的Redis hset并发性能测试
- C++ vector容器类型详解
- 通过命令行来执行php文件
- 项目文件不在apache根目录下怎么可以访问到呢?
- loadrunner简单使用——HTTP,WebService,Socket压力测试脚本编写
- 浅谈Dynamic 关键字系列之一:dynamic 就是Object