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{}