shell四劍客awk

(1) awk原理
編程

 awk的原理是逐行處理文件中的數據,查找與命令行所給定內容相匹配的內容,若是發現匹配內容,則進行下一步編程。若是找不到匹配內容,則繼續處理下一行。ide


(2) awk實戰命令行


  <1> jfedu.txt文件中,查找jd.com這一行,在屏幕上打印出來(用awk和sed進行查找)
日誌

     sed  -n  '/jd.com/p' jfedu.txt       awk  '/jd.com/'   jfedu.txt排序

  註釋:ip

               awk 和 sed 同樣一樣具備查找功能,不一樣的是awk進行查找時不須要加p參數it

 

  <2> jfedu.txt文件中,查找jd.com 和  baidu.com 這一行 ,在屏幕上打印出來(用awk和sed進行查找)class


     sed   -n  '/jd.com/,/baidu.com/p'  jfedu.txt           awk '/jd.com/,/baidu.com/'  jfedu.txtawk


  <3> jfedu.txt文件中,打印第一列和第二列   原理

     awk '{print $1,$2}'  jfedu.txt


  <4> jfedu.txt文件中,如寫成這個樣式(例如:1:2:3:4:5),用awk 打印出數字來(不要把:打印出來)

      sed 's/:/ /g' jfedu.txt | awk '{print $1,$2,$3,$NF}'

   註釋: 

              $1 $2  $3   表示打印第一列  第二列  第三列

              $NF  表示打印最後一列


   <5> jfedu.txt文件中,打印第一行和第一列

       awk  '{print NR,$1}' jfedu.txt


   <6> 打印jfedu.txt所有內容

      awk  '{print $0}' jfedu.txt


    <7> 查看access.log日誌文件,查找排名前20位的ip, 從小到大進行排列,去掉重複的ip

      awk '{print $1}'  access.log  | sort -nr|  uniq-c |  sort -nr|  head -20


     <8> 查看access.log日誌文件, 查找9:00 - 10:00 , 查找排名前20名的ip, 從小到大進行排列,去除重複ip

      awk '/9:00/,/10:00/' access.log |  awk '{print $1}'  access.log  | sort -nr|  uniq-c |  sort -nr|  head -20


      <9> 用df -h  查看磁盤分區  ,要求: 只查看大於等於第二行的內容 ,第一列

       df -h | awk 'NR>=2 {print $1}'


      <10> 打印passwd密碼文件的第一列,並把輸出的內容追加到name.csv文件中

        awk -F: '{print $1}' /etc/passwd >name.csv


       <11> awk 以冒號進行切割,  打印passwd文件的第一列和最後一列,但只顯示第三行和第五行

         awk -F: 'NR==3,NR==5 {print $1}' /etc/passwd


       <12> awk指定文件jfedu.txt文件中第一列的總和

         cat jfedu.txt| awk '{sum+=$1}END {print sum}'


        <13> awk NR 行號除於2餘數爲0,則跳過這行,繼續執行下一行,打印在屏幕上

          awk -F: 'NR%2==0 {next} {print NR , $1}'  /etc/passwd      


         <14> awk NR 行號除於2餘數爲1,則跳過這行,繼續執行下一行,打印在屏幕上

           awk -F: 'NR%2==1 {next} {print NR , $1}'  /etc/passwd


          <15> awk分析Nginx日誌狀態碼是404,502等錯誤頁面,打印出頁面打開時間,用戶訪問ip, ,用戶訪問頁面的地址,並對ip從小到大進行排序,查看排在前

                   20的ip

            awk -F: '$9~/404|301|502|/ {print $1,$7,$9,$NF}' access.log | sort -nr| uniq-c |  sort -nr | head -20|

相關文章
相關標籤/搜索