用户工具


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