
 
 [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 
         还支持其他的一些运算符,例如正号 
         + 
         、负号 
         - 
         、自增 
         ++ 
         以及自减 
         -- 
         等,这些运算符的使用方法与其他  
        
 
         
         的语言的使用方法完全相同。 
        
 
       


















