1. awk的模式:
awk 的基本语法:awk [options] 'PATTERN { action }' file1 file2, ...
2. 关系表达式:
[root@localhost test11] # cat fileliming 80wangmei 70zhangsan 90lisi 81[root@localhost test11] # awk '$2 > 80 {print}' filezhangsan 90lisi 81
3. 正则表达式 :
[root@localhost test11] # awk '/^l|z/{print}' fileliming 80zhangsan 90lisi 81
4. 混合模式:
[root@localhost test11] # awk '/^l/ && $2>80 {print}' filelisi 81
pattern1, pattern2
[root@localhost test11] # awk '/^liming/,$2==90 {print}' fileliming 80wangmei 70zhangsan 90
注意:
区间匹配是最短匹配,既当pattern1成立时会最短匹配pattern2成立的区间。
若pattern1成立而pattern2不成立,则会匹配pattern1成立的记录以及一下的所有记录。
6. BEGIN模式:
[root@localhost test11] # cat 1.awk#!/bin/awk -fBEGIN {print "hello,world" }[root@localhost test11] # ./1.awkhello,world
7. END模式 :
[root@localhost test11] # cat 2.awk#! /bin/awk -fBEGIN {print "scores report"print "================================="}{ print }END {print "================================"print "printing is over"}[root@localhost test11] # ./2.awk filescores report=================================liming 80wangmei 70zhangsan 90lisi 81================================printing is over
8. awk控制语句 :
1>. if语句的功能是根据用户指定的条件来决定执行程序的哪个分支,其语法如下:
if (expression){statement1statement2}else{statement3statement4}
2>. while语句是另外一种常用的循环结构,其语法如下:
while (expression){statement1statement2...}
do {statement1statement2...}while (expression)
同样,当表达式expression的值为真时执行循环体中的语句。
for(expression1; expression2; expression3){statement1statement2...}for循环还可以用来遍历数组元素:语法: for(变量 in 数组) {语句}
在上面的语法中,表达式expression1通常用来初始化循环变量,表达式expression2通常用来指定循环执行的条件,表达式expression3通常用来改变循环变量的值。当表达式expression2的值为真时,执行循环体中的语句。
5>. break语句:用户可以通过使用break语句在适当的时机退出for以及while等循环结构,而不必等到循环结构自己退出。
[root@localhost ~] # netstat -ant | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'ESTABLISHED 1LISTEN 10每出现一次被 /^tcp/ 模式匹配到的行,数组 S[ $NF ] 就加 1 , NF 为当前匹配到的行的最后一个字段,此处用其值做为数组S 的元素索引。
delete array[index]
10. awk内置函数:
[root@localhost ~] # date +%T | awk '{split($0,a,":");print a[1],a[2],a[3]}'19 32 19
2>. length([string]):
[root@localhost ~] #awk 'BEGIN{print length("uplooking")}'9
3>. substr(string, start [, length]):
功能:取string字符串中的子串,从start开始,取length个;start从1开始计数;
示例:
[root@localhost ~] #awk 'BEGIN{print substr("uplooking",u,2)}'up
4>. system(command) :
功能:执行系统command并将结果和执行命令后的状态码返回至awk命令;
示例:
[root@localhost ~] # awk 'BEGIN{print system("whoami")}'root
0
5>. systime():
[root@localhost ~] # awk 'BEGIN{print systime()}'
1658489640
6>. tolower(string) :
功能:将s中的所有字母转为小写;
示例:
[root@localhost ~] # awk 'BEGIN{print tolower("WWW.baidu.COM")}'www.baidu.com
7>. toupper(s):
[root@localhost ~] # awk 'BEGIN{print toupper("WWW.baidu.COM")}'WWW.BAIDU.COM