您的位置:首页 > 其它

awk使用 模式总结

2016-03-28 11:31 260 查看
awk使用 模式总结

1. BEGIN { 语句 }

在读取任何输入前执行一次 语句

2. END { 语句 }

读取所有输入之后执行一次 语句

3. 表达式 { 语句 }

对于 表达式 为真(即,非零或非空)的行,执行 语句

4. /正则表达式/ { 语句 }

如果输入行包含字符串与 正则表达式 相匹配,则执行 语句

5. 组合模式 { 语句 }

一个 组合模式 通过与(&&),或(||),非(|),以及括弧来组合多个表达式;对于组合模式为真的每个输入行,执行 语句

6. 模式1,模式2 { 语句 }

范围模式(range pattern)匹配从与 模式1 相匹配的行到与 模式2 相匹配的行(包含该行)之间的所有行,对于这些输入行,执行 语句 。

BEGIN和END不与其他模式组合。范围模式不可以是任何其他模式的一部分。BEGIN和END是仅有的必须搭配动作的模式。

例子:

awk.txt文件

Beth 4.00 0

Dan 3.75 0

kathy 4.00 10

Mark 5.00 20

Mary 5.50 22

Susie 4.25 18

Zeng 3.68 9

1.打印中间某些词

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

2.打印匹配$3==0的命令

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

3.打印字段数量

awk '{print NF,$1}' awk.txt

4.打印行号

awk '{print NR,$1}' awk.txt

5.打印输入中添加内容

awk '{print "total pay for",$1,"is",$2*$3}' awk.txt

6.printf打印数据

awk '{ printf("total pay for %s is %.2f\n",$1,$2*$3)}' awk.txt

7.对其打印输出 加 “-数字”

awk '{ printf("total pay for %-5s is %.2f\n",$1,$2*$3)}' awk.txt

8.对处理的数据进行排序

awk '{ printf("total pay for %-8s is %.2f\n",$1,$2*$3)}' awk.txt | sort

9.选择输出

awk '$2>=5 { print $2,$3}' awk.txt | sort

10.计算选择输出

awk '$2*$3>=5 { print $2,$3}' awk.txt | sort

11.文本内容选择输出

awk '$1=="Zeng" {print $1,$2,$3}' awk.txt

12.组合逻辑选择查询

awk '$2<5 && $3==0 {print $1,$2,$3}' awk.txt

13.BEGIN与END模式

awk 'BEGIN {print "Name Rate Hours";print ""}{print}' awk.txt

14.计算处理

awk '$3 < 20 {temp=temp+1} END {print temp}' awk.txt

15.处理文本

awk '$2>maxrate {maxrate = $2;maxtemp=$1} END {print "Highest hour:",maxrate,"for",maxtemp}' awk.txt

16.字符串连接

awk '{myname = myname $1 " "} END {print myname}' awk.txt

17.打印最后输出一行

awk '{ last = $0} END {print last}' awk.txt

18.内置函数使用

awk '{print $1,length($1)}' awk.txt

19.if-else语句的使用

awk '$2>4 {n=n+1;pay=pay+$2*$3} END { if ( n>0) print n,pay,pay/n; else print "No free"}' awk.txt

20.while语句的使用

awk '{i=1; while (i<=$3) {printf("\t%.2f\n",$3);i=i+1} }' awk.txt

21.for语句的使用

awk '{for(i=1;i<=$3;i=i+1) printf("\t%.2f\n",$3)}' awk.txt

22.数组的使用

awk '{line[NR]=$0} END {i=NR;while(i>0){print line[i],i=i-1}}' awk.txt

23.去除重复第一行并定义“|”为分隔符
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: