awk

一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)列如

awk

(6)awk -F : {print $SNF} yunjisuan  ($SNF默认取每行分割后的最后一列内容) $0取文件的全部内容

(7)awk 的格式:

awk

 

(8)awk命令名 后面加参数 单引号里面的是模式动作大括号里的是动作,大括号外的是模式:就是条件根据什么条件来筛选数据内容,动作:是根据筛选出的条件  执行的动作

(9)awk -F : NR--3 yunjisuan (就是只输出第三行没有{}这就是模式) awk -F : NR>3 && NR<8(就是只输出4-7行也没有{}也是模式条件筛选) (-F“:”是根据分隔符对每行的内容进行切割,在根据单引号里面的模式对每行的内容进行过滤

(10)awk

  根据参数分割 在根据模式对文件内容过滤,符合模式的在动作输出。

(11)

awk

     [ ] 是正则 [: /] 是当两个两个分隔符号,[: /]+是贪婪模式: /没在一起当俩个,在一起就当一个分隔符

awk

awk

awk

BEGIN模块如何读取数据:

awkawk

BEGIN修改输入换行符 

awk

awk

 

ORS修改输出换行符

 awk

awk

答案列如图下:

 

 awk

awk

awk

 

sort默认以26个英文字母排序

  (uniq是相同的单词去重只留一个)

(uniq -c 是指去重复的并记录重复的有多少个)

(sort -n 按照数字大小排序)

(sort -rn 按照数字倒序排序)

(sort -k2 按照第二列的 进行排序)

 ##################################################################################################################

                                                                  awk

一,awk 的模式:

(1)正则表达式作为模式

(2)比较表达式作为模式

(3)范围模式

(4)特殊模式BEGINEND

(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)两种方法:(1sed ‘#:#$#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]}’ 文件名