shell編程-awk-02

awk處理條件:
認識awk處理條件的設置

1.使用正則設置條件
-輸出以bash結尾的完整記錄(輸出整行)
# awk -F: ‘/bash$/{print}’ /etc/passwd

     -輸出包含root的行
    # awk -F: '/root/' /etc/passwd

    -輸出root或者tom賬戶的用戶名和UID信息
    # awk -F: '/^(root|tom)/{print $1,$3}'

    -輸出賬戶名稱包含oo的行,(第一 列包含oo)
    # awk -F: '$1~/oo/' /etc/passwd

    -輸出登錄shell不以nologin結尾的用戶名和登錄shell信息。
    # awk -F: '$7!~nologin$/{print $1,$7}' /etc/passwd
     !~ :取反匹配

2.使用數值/字符串比較設置條件
比較符號:==(等於) !=(不等於) >(大於)

=(大於等於) <(小於) <=(小於等於)

    -輸出賬戶UID大於等於1000的賬戶名和UID的信息
    # awk -F: '$3>=1000{print $1,$3}' /etc/passwd

    -輸出第三行
      # awk -F:  'NR==3{print}' /etc/ passwd

     -輸出UID小於10的賬戶名和UID信息
     # awk -F: '$3<10{print $1,$3}' /etc/passwd

     -輸出用戶名爲“root”的行:
     # awk -F: '$1=="root"' /etc/passwd

3.邏輯測試條件

     -輸出賬戶UID大於10並且小於20的賬戶信息:
     # awk -F: '$3>10 && $3<20' /etc/passwd

     輸出賬戶UID大於1000或者賬戶UID小於10的賬戶信息:
     # awk -F: '$3>1000 || $3<10' /etc/passwd

4.數學運算

    [root@xieqc ~]# awk 'BEGIN{x++;print x}'
    1
    [root@xieqc ~]# awk 'BEGIN{x=8;print x+=2}'
    10
    [root@xieqc ~]# awk 'BEGIN{x=8;x--;print x}'
    7
    [root@xieqc ~]# awk 'BEGIN{print 2+3}'
    5
    [root@xieqc ~]# awk 'BEGIN{print 2*3}'
    6
    [root@xieqc ~]# awk 'BEGIN{print 2*3}'
    6
    [root@xieqc ~]# awk 'BEGIN{ print 23%8}'
    7
    [root@xieqc ~]# seq  200 | awk  '$1%3==0{i++} END{print i}'  //統計3的倍數的數量
    66

-統計200以內3的倍數的數量
#seq 200 | awk ‘$1%3==0{i++} END{print i}’

awk過濾if分支結構:
if分支結構(雙分支、多分支)
1.單分支

    統計/etc/passwd文件中UID小於或等於1000的用戶個數:

    # awk -F: '{if($3<=1000){i++}}END{print i}' /etc/passwd
  
    統計/etc/passwd文件中UID大於1000的用戶個數:

    # awk -F: '{if($3>1000){i++}}END{print i}' /etc/passwd
   
    統計/etc/passwd文件中登錄Shell是“/bin/bash”的用戶個數:
    # awk -F: '{if($7~/bash$/){i++}}END{print i}'  /etc/passwd

雙分支

    分別統計/etc/passwd文件中UID小於或等於1000、UID大於1000的用戶個數:

    # awk -F: '{if($3<=500){i++}else{j++}}END{print i,j}' /etc/passwd

    分別統計/etc/passwd文件中登錄Shell是“/bin/bash”、 登錄Shell不是“/bin/bash”的用戶個數:

    # awk -F: '{if($7~/bash$/){i++}else{j++}} END{print i,j}' /etc/passwd
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章