1分钟懂awk-技不在深,够用就行 
1.什么是AWK 
(1)Aho、Weinberger、Kernighan三位发明者名字首字母; 
(2)一个行文本处理工具; 
2.AWK基本原理 
2.1原理:逐行处理文件中的数据 
2.2语法: 
说明: 
(1)单引号是为了和shell命令区分开; 
(2)大括号{}表示一个命令分组; 
(3)pattern是一个过滤器,表示命中pattern的行才进行action处理; 
(4)action是处理动作; 
(5)使用#作为注释; 
例子:显示hello.txt中的第3行至第5行 
 
 | cat hello.txt | awk NR==3, NR==5{print;} 
 |  
  2.3pattern说明 
pattern参数可以是egrep正则中的一个,正则使用/pattern/ 
例子:显示hello.txt中,正则匹配hello的行 
 
 | cat hello.txt | awk /hello/ 
 |  
  说明: 
(1)pattern和action可以只有其一,但不能两者都没有; 
(2)默认的action是print; 
例子:显示hello.txt中,长度大于100的行号 
 
 | cat hello.txt | awk length($0)80{print NR} 
 |  
  3.内置变量 
FS 分隔符,默认是空格 
NR 当前行数,从1开始 
NF 当前记录字段个数 
$0 当前记录 
$1~$n 当前记录第n个字段 
例子:显示hello.txt中的第3行至第5行的第一列与最后一列 
 
 | cat hello.txt | awk NR==3, NR==5{print $1,$NF} 
 |  
  4.内置函数 
gsub(r,s):在$0中用s代替r 
index(s,t):返回s中t的第一个位置 
length(s):s的长度 
match(s,r):s是否匹配r 
split(s,a,fs):在fs上将s分成序列a 
substr(s,p):返回s从p开始的子串 
5.操作符 
5.1运算符 
类似于c,支持+、-、*、/、%、++、–、+=、-=等诸多操作; 
5.2判断符 
类似于c,支持==、!=、、=、~(匹配于)等诸多判断操作; 
6.控制流程 
6.1.BEGIN和END 
BEGIN和END本质是一个pattern。 
BEGIN用于awk程序开始开始前,做一些初始化的工作; 
END用于awk程序结束前,做一些收尾的工作。 
例子:统计字符个数 
 
 | awk  
BEGIN 
{ 
count=0; 
} 
{ 
count+=length($0); 
} 
END 
{ 
print count; 
} 
 |  
  6.2流程控制语句 
(1)if(condition){}else{} 
(2)while{} 
(3)do{}while(condition); 
(4)for(init;condition;step){} 
(5)break/continue:如果有END,会执行END中的收尾工作 
个流程控制语句用法几乎与c相同。 
7.awk与shell的交互 
(1)awk中使用shell中定义的变量:使用单引号即可; 
 
 | #!/bin/bash 
STR=hello 
echo | awk { 
print ${STR}; 
} 
 |  
  (2)awk中使用shell命令:使用双引号,或者system命令; 
 
 | #!/bin/bash 
echo hello | awk { 
print $0 | cat 
} 
 |  
  或者 
 
 | #!/bin/bash 
echo | awk { 
system(date  date.txt) 
} 
 |  
  (3)awk中的变量传出至shell:没有什么好方法,老老实实用文件吧; 
(4)getline:awk里,从文件中读取变量到awk中 
 
 | #!/bin/bash 
echo | awk { 
while(getline  date.txt) 
{ 
print $0; 
} 
} 
 |  
  8.结束语 
对不起,楼主欺骗了你,认真看完本文或许不止1分钟。不过,如果你真的认真阅读并超过了1分钟,相信你会有收获。 
==【完】== 
 
  
实时好文,欢迎长按关注“架构师之路” 
 
 
==好文推荐== 
回【join】秒懂SQL中各种join 
 
回【追查】Linux下线上问题常用追查命令 
回【微信】微信为何这么省流量(火) 
回【秒杀】秒杀系统架构优化思路(火) 
回【招聘】入职58到家 
回【设计】数据库架构师该设计什么(新) 
 
 
==小游戏== 
回大于10的整数,返回随机好文(猜猜怎么实现的) 
 
 
码字不易,求帮转哈 
                     
 |