BEGIN{ #FS = "4" #设定分隔符 x = 0 #定义变量 print "begin" } $1 !~ /123/{ #当第一个字段不匹配123时 print "not contain 123" } $2 ~ /abc/{ #当第二个字段匹配abc时 print "contain abc" } /xyz/{ #当整行匹配xyz时 print "contain xyz" } { # 没有任何限定,对每一行进行处理 x += 1 print "each line: " $0 #连接字符串时中间只能隔一个空格 print "字段个数 : " NF print "行号 : " NR print "参数个数 : " ARGC print "输入文件名 : " FILENAME #不能放在BEGIN块中 print "外部参数 : " out_param #不能放在BEGIN块中 } END{ print "line:" (x*= 10) #连接字符串和表达式时,表达式要用括号扩起来 print "end" } ---- ====== 流程控制 ====== ===== if else ===== { if($0 ~ /abc/) print "contain abc" else if($0 !~ /222/) print "not contain 222" else print "end" } ===== for ===== { for(i=1;i<3;i++){ print i } } ------------另一种 for 循环格式------------------------------ { A["a"]=1 #帽号一定不能少 A["b"]=2 for(i in A){ print A[i] delete A[i] # 从数组中删除一个元素 } } ===== while ===== { i=1 while(i<3){ print i i++ } } ===== 其他 ===== break : 退出整个循环 contine : 退出本次循环 exit 0 : 退出awk程序,这个给shell的返回值 ---- ====== 常用函数 ====== srand() print (int(rand()*1000000)%4) int("1") #把字符1转换成数字1 split('a b c',A," ") #把a b c字符串按空格分割把结果放到数字 A 中 lenth("abc") #返回字符串的长度 tolower("ABC") #转换成小写 toupper("abc") #转换成大写 gsub(r,s,t) #修改 t 中的字符串字符串,把所有的 r(正则表达式)替换成 s(字符串) a="abcdeabc" gsub(/a.c/,"123",a) print a match(s,r) #匹配字符串 s 中是否有 r (正则表达式),有则返回第一次出现的下标,没有则返回 0 print match("abcdeabc",/a.c/) substr(s,n,t) #从字符串 s 中返回从 p 开始的长度为 n 的字符串。如果没有指定 n 。则一直到最后 print substr("abcdeabc",2) ---- ====== 系统函数 ====== getline #读取输入流的下一行 读取成功:返回1 读到末尾:返回0 读取失败:返回-1 system("mkdir hello") #调用shell创建目录 读取成功:返回0 读取失败:返回1 ====== 自定义函数 ====== BEGIN{} function add(a,b){ #连接字符串 a 和 b return a b } { print add("hello","word") } END{}