
 [root@localhost ~] # awk 'BEGIN{x=2;y=3;print x**y,x^y,x*y,x/y,x+y,x-y,x%y}'  
 
 8 8 6 0 .666667  5  -1  2  
 
 
 赋值运算符  
 
  条件运算符  
  awk 中的条件运算符只有一个,其语法如下:  expression?value1:value2  
  这是一个三目运算符,当表达式 expression 的值为真时,返回值为 value1 ;否则,返回值为 value2 。  
  示例:  
  [root@localhost ~] # cat file  
  3 6  
  10 9  
  3 3  
  [root@localhost ~] # awk '{max=$1>$2?$1:$2;print NR,"max=",max}' file  
  1  max =  6  
  2  max =  10  
  3  max =  3  
   逻辑运算符  
  awk 支持 3 种逻辑运算,分别为逻辑与、逻辑或和逻辑非  
  
  关系运算符 
 
  [root@localhost test11] # awk '$1~/^w/ {print}' file  
  wangmei  70  
  [root@localhost ~] # awk -F: 'BEGIN {printf "%-10s %-5s  
  %-15s\n","user","uid","shell"} $3==0,$7~"nologin" {printf "%-10s %-5s  
  %-15s\n",$1,$3,$7}' /etc/passwd  
  user uid shell  
  root  0  /bin/bash  
  bin  1  /sbin/nologin  
  [root@localhost ~] # awk -F: 'BEGIN {printf "%-10s %-5s  
  %-15s\n","user","uid","shell"} $3==0,$7~"nologin" {printf "%-10s %-5s  
  %-15s\n",$1,$3,$7} END{print "-------end---------"}' /etc/passwd  
  user uid shell  
  root  0  /bin/bash  
  bin  1  /sbin/nologin  
  -------end---------  
  说明: $3 == 0 , $7 ~ "nologin" 表示匹配符合条件 1 到条件 2 之间的所有行(成对多次匹配),如果条件 2  
  不成立,则一直匹配到文件尾部  
  [root@localhost ~] # cat /etc/passwd | awk '{FS=":"} $3 < 10 {print $1 "\t"  
  $3}'  查阅 /etc/passwd 文件第三列小于 10 以下的数据,并且仅列出账号与第三列。但是这样的写法  
  会导致第一行无法正确显示出来,由于读入第一行的时候,变量 $1 , $2…… 默认还是以空格符为分隔的,  
  定义的 FS=“ : ” 仅能在第二行后才开始生效。可以使用 BEGIN 这个关键字来达到从第一行读入。  
  [root@localhost ~] # cat /etc/passwd | awk 'BEGIN {FS=":"} $3 < 10 {print $1  
  "\t" $3}'  
  [root@localhost ~] # cat /etc/passwd | awk -F : '$3 < 10 {print $1 "\t" $3}'  
  说明: $3 变量是空值,但是后面与之作比较的是整数,所以 $3 的值是 0 ,满足条件,所以打印 $1 的结果,在此打印 $3 的结果时 $3 是空串。 
    其他运算符  
  awk 还支持其他的一些运算符,例如正号 + 、负号 - 、自增 ++ 以及自减 -- 等,这些运算符的使用方法与其他  
  的语言的使用方法完全相同。