awk基础

awk不仅仅时linux系统中的一个命令,而且是一种编程语言,可以用来处理数据和生成报告(excel)。处理的数据可以是一个或多个文件,可以是来自标准输入,也可以通过管道获取标准输入,awk可以在命令行上直接编辑命令进行操作,也可以编写成awk程序来进行更为复杂的运用。

1.格式

pattern可以理解为条件,也可以理解为筛选内容(范围)。

例如:

awk结合正则查看文本的内容:

-F 指定awk按照什么标志进行文件的切割,切割成一列一列的。如果不指定 -F 参数 awk默认以空格进行文本的切割,{}中的代表输出的意思,$代表取列 ,$1就是取第一列,以此类推。($0,取文本的全部,$NF取每行的最后一列)

应用

按单词出现频率降序排序(计算文件中每个单词的重复数量)

注:(此处使用sort -rn逆转排序uniq  -c删除相同的并计数

例如

awk的模式都有几种

  • 正则表达式作为模式
  • 比较表达式作为模式
  • 范围模式
  • 特殊模式BEGIN和END

 例如

练习题1:显示姓Zhang的人的第二次捐款金额及她的名字

awk  -F "[ :]+" '$1~/^Zhang/{print $1,$5}' test

 

练习题2:显示Xiaoyu的名字和ID号码

awk  -F "[ :]+" '$2~/Xiaoyu/{print $1$2,$3}' test

 

练习题3:显示所有以41开头的ID号码的人的全名和ID号码

awk  -F "[ :]+" '$3~/^41/{print $1$2,$3}' test

 

练习题4:显示所有以一个DX开头的人名全名

awk  -F "[ :]+" '$2~/^D|^X/{print $1$2}' test

 

练习题5:显示所有ID号码最后一位数字是15的人的全名

awk  -F "[ :]+" '$3~/1$|5$/{print $1$2}' test

练习题6:显示Xiaoyu的捐款,每个值都有以开头。如520135

awk  -F "[ ]+"  '$2~/Xiaoyu/{print $4}' test | tr ":" "$"

练习题7:显示所有人的全名,以姓,名的格式显示,如MengFeixue

awk  -F "[ ]+"  '{print $1,$2}' test | tr " " ","

 

变量

默认变量的初始值为0BEGIN(可以计算,赋值)

END模式输出结果

求和(1-100,使用seq 追加100到11文件)

 

数组

例如

我们可以利用(动作 )进行运算,利用END模块(for循环(对重复的数据计数))输出结果

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2018-10-29 14:51  wo为谁  阅读(119)  评论(0编辑  收藏  举报