awk的基本用法

awk是从输入的文本或者其他地方将一行数据进行拆分,类似与linux提供的一款轻量级的编程语句,可以实现简单的功能。

参考:https://awk.readthedocs.io/en/latest/chapter-one.html

 

eg: 筛选出某个进程的pid

ps -ef | grep $PACKAGED_NAME_ADMIN.jar | grep -v grep | awk '{ print $2 }

 

eg:查询文本文件的内容t.txt

3   3   3 
1   1   1
2   2   2

基本格式:

awk '[筛选条件] {要执行的命令}'  要查询的文本

 

awk  '{print $1,$2,$3}'  t.txt

awk '$1>0  {print $1,$2,$3}' t.txt

 

eg:计算文本中第一列的和,注意是大写END

awk '{emp=emp+$1} END {print "第一列的和:",emp}' t.txt

 

求平均数

awk '{emp=emp+$1;num=num+1} END {print "第一列的平均数:",emp/num}' t.txt

 

求两列的平均数

awk '{emp=emp+$1;num=num+1;lie2=lie2+$2} END {print "第一列的平均数:",emp/num,"\n第二列的平均数:",lie2/num}' t.txt

第一列的平均数: 2 
第二列的平均数: 2

 

awk的if  els 语句,注意事项,每个判断后面都必须跟;隔开,否则报错

eg: 判断第一列的总和大于1就输出一句话,小于1也输出一句话。

awk '{emp=emp+$1} END {if (emp>1) print "第一列总和大于1",emp; else print "第一列总和小于1",emp}' t.txt

第一列总和大于1

 

awk的for循环

eg:将第一列计数,然后打印出结果10次

awk '$1>0 {emp=emp+1} END {for(i=0;i<10;i++) print "打印10次结果:",emp}' t.txt

打印10次结果: 3
打印10次结果: 3
打印10次结果: 3
打印10次结果: 3
打印10次结果: 3
打印10次结果: 3
打印10次结果: 3
打印10次结果: 3
打印10次结果: 3
打印10次结果: 3

 

分组输出最新值

解释说明:定义了一个arrays数组,下表为第一列$1,值为第二列$2,然后打印输出arrays中 下标和value,将文件输出到ck_result_日期下面。

awk '$2>0 {arrays[$1]=$2} END {for (k in arrays) {print k,arrays[k]}}' ck_table.txt  > ./ck_result_${d}.txt

 

 

 

 

你可能感兴趣的:(工具类)