awk
Posted yixin666
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了awk相关的知识,希望对你有一定的参考价值。
一awk 简介
(1)awk --version (查看awk版本号)(2)awk 取数据快
(3)awk ‘{print $1}’ yunjisuan.txt(不加-F全输出print是输出&1是选项) -F 指定awk按照什么标志进行文件的内容切割,切割成一列一列的
(4)如果我们不指定-F参数,awk默认按照空格进行文本切割 {}中的print 代表输出的意思,$代表去列$1是取第一列,依次类推
(5)列如
(6)awk -F “:” ‘{print $SNF}’ yunjisuan ($SNF默认取每行分割后的最后一列内容) $0取文件的全部内容
(7)awk 的格式:
(8)awk命令名 后面加参数 单引号里面的是模式动作大括号里的是动作,大括号外的是模式:就是条件根据什么条件来筛选数据内容,动作:是根据筛选出的条件 执行的动作
(9)awk -F “:” ‘NR--3’ yunjisuan (就是只输出第三行没有{}这就是模式) awk -F “:” ‘NR>3 && NR<8’(就是只输出4-7行也没有{}也是模式条件筛选) (-F“:”是根据分隔符对每行的内容进行切割,在根据单引号里面的模式对每行的内容进行过滤)
(10)
根据参数分割 在根据模式对文件内容过滤,符合模式的在动作输出。
(11)
[ ] 是正则 [: /] 是当两个两个分隔符号,[: /]+是贪婪模式: /没在一起当俩个,在一起就当一个分隔符
BEGIN模块如何读取数据:
BEGIN修改输入换行符
ORS修改输出换行符
答案列如图下:
(sort默认以26个英文字母排序)
(uniq是相同的单词去重只留一个)
(uniq -c 是指去重复的并记录重复的有多少个)
(sort -n 按照数字大小排序)
(sort -rn 按照数字倒序排序)
(sort -k2 按照第二列的 进行排序)
##################################################################################################################
awk
一,awk 的模式:
(1)正则表达式作为模式
(2)比较表达式作为模式
(3)范围模式
(4)特殊模式BEGIN和END
(5)
(6)
(7)
(8)awk ‘$9~/^200$/{print $1}’文件名(模式条件以第九列含有以200开头接尾的,动作输出第一列内容)
awk ‘$9==”200”{print $1}’ 文件名跟上面的命令输出的一样
练习题
(1)awk -F “[ :]+” ‘/^Zhang/{print $2,$5}’ 文件名
(2)awk -F”[ :]+” ‘/Xiaoyu{print $2,$3}’ 文件
(3)awk -F”[ :]+” ‘$3~/^41/{print $1,$2,$3}’ 文件名
(4)awk -F”[ :]+” ‘$2~/^[DX]/{print $1,$2,$3}’ 文件名
(5)awk -F”[ :]+” ‘$3~/[15]/{print $1,$2,$3}’ 文件名
(6)两种方法:(1)sed ‘#:#$#g’ 文件名 | awk -”[空格]+” ’$2~/^Xiapyu/{print $4}’ (2) awk -F”[ :]+” ‘$2~/Xiaoyu/{print “$”$4”$”$5”$”$6}’ 文件名
(7)awk -F”[ :]+” ‘{print $1”,”$2}’ 文件名
二,用awk 取ip 地址
(1)ifconfig eth0 | awk ‘BEGIN{RS=”[ :]”}NR==31’
(2)ifconfig eth0 | awk -F “(addr:) | (Bcast:)” ‘NR==2{print $2}’
(3)ifconfig eth0 | awk -F”[ :]+” ‘NR==2{print $4}’
三,
在计算机里 +是加 -是减 *是乘 /是除 **是次方
用awk看文件有多少行
awk ‘{i=i+1}END{print i}’ 文件名
awk ‘/xxx/{i++}END{print i}’ 文件名 (查找这个文件内容含有xxx的有几行)
(1)求一个文件里所有数字相加的和
awk ‘{i=i+$0}END{print i}’ 文件名
(2)求一个文件里所有数字相乘的和
awk ‘BEGIN{i=1}{i=i*$1}END{print i}’ 文件名
awk 的数组
(1)找出所有域名和占用流量值
命令:awk -F “[ /]+” ‘{print $2,$4}’ 文件名
(2)找出哪个域名登陆的次数多
命令:awk -F “[ /]+” ‘{h[$2]=h[$2]+1}END{for(i in h)print i,h[i]}’ 文件名
(3) 找出相重的域名的占用流量总和
命令:awk -F “[ /]+” ‘{h[$2]=h[$2]+$4}END{for(i in h)print i,h[i]}’ 文件名
以上是关于awk的主要内容,如果未能解决你的问题,请参考以下文章