首页 > 代码库 > awk
awk
常用命令:
awk‘!a[$1]++‘ 这种格式的每个部分的意义。
1、awk数组知识
2、awk的基本命令格式 awk ‘pattern{action}‘
省略action时,默认action是{print},如awk ‘1‘就是awk ‘1{print}‘
3、var++的形式:先读取var变量值,再对var值+1
awk处理第一行时:先读取a[$1]值再自增,a[$1]即a[1]值为空(0),即为awk ‘!0‘,
即为awk ‘1‘,即为 awk‘1{print}‘
awk处理第二行时: 先读取a[$1]值再自增,a[$1]即a[1]值为1,即为awk ‘!1‘,
即为awk ‘0‘,即为awk ‘0{print}‘
效果就是有重复$1的行只有第一次出现被打印,其他的都过滤了。
如果要顾虑的时候参考的不止一个域那就可以在方括号里写上要参考的域,例如 awk ‘!a[$1 $3]++‘
$域操作符
-F 改变域分隔符
Sort
-c 测试文件是否排序
-k 指定排序的域
-m 合并两个已经排序的文件
-n 根据数字大小进行排序
-o 将输出写到指定文件
-t 改变域分割符
-u 出去结果中重复的行
-r 将排序结果逆向排序
Uniq
-u 只显示不重复行。
-d 只显示有重复数据行,每种重复行只显示其中一行
-c 打印每一重复行出现次数。
-f n为数字,前n个域被忽略。
gunzip festamode.access.log.gz
awk ‘!a[$1]++‘ festamode.access.log|awk ‘{print $4,$1}‘ >>12.5.txt
awk