linux shell學習之awk ---新手筆記

來源:互聯網
上載者:User

標籤:

1.AWK的pattern
  BEGIN
  END
  expression 例: NF>10 或/^a/
  /regular expression/?
    可以?用類似/^a/這種寫法
    另一種寫法$1 ~ /^a/       //欄位匹配
  運算式之間可以?用&& || ! ?: 等操作符做布爾運算(當然可以是Regex)
  expression , expression 表?示開始和結束 例: NF==5,NF==10

例子1: cat /etc/passwd |awk -F":" ‘NR==5,NR==10{print NR,$1}‘   //只顯示passwd檔案的第5-10行,並定義欄位分隔用:號

     5 sync
        6 games
        7 man
        8 lp
        9 mail
       10 news

       知識點:1.-F參數。2.expression , expression的用法。

2.AWK的action

  完善的編程語?言?支援變數賦值、數組、判斷、迴圈、?自訂函數
  有很?方便的預定義的變數和函數
  最常?用的是print函數
  欄位取值$1、$2、$3……$NF
  $0就是檔案的所有行

     注意:awk的定義變數不是一定非得$符號開頭,$符號是取欄位值。

例子2:awk ‘BEGIN{RS="[^0-9a-zA-Z]"};{count[$0]++};END{for (i in count) print i,count[i]}‘<1.txt

  iwant 1
  chinawelcome 1
  ilove 1
  to 7
  china 4
  love 4
  changsha 5
  i 4
  beijing 2
  welcome 5
  you 5

註:語句作用:將檔案的每一個單詞提取出單獨成行,並統計單詞出現的次數。

知識點:1.BEGIN,END塊的寫法和使用({}括起來,;來隔開)。2.分隔字元RS和FS的區別(RS:遇到RS即另開一行)。3.數組的使用。4.for迴圈。5.檔案重新導向輸入

例子3 對上面例子進行擴充(排序並寫入新檔案)

 awk ‘BEGIN{RS="[^0-9a-zA-Z]"};{count[$0]++};END{for (i in count) print i,count[i] | "sort  -r -k2 -o 3.txt" }‘<1.txt   

知識點:1.print用法。print … | command : 運?command命令並將print的輸出作為command的輸?。注意整個command包括參數所有部分都在雙引號內

            2. sort用法。-o參數將排序結果寫入檔案,而此重新導向文法完成。

3. getline的用法

   例子:將檔案合并起來。

     vi join.awk

     #!/usr/bin/awk -f

    {  

  getline sl<ARGV[2]

      print $0 sl

}

  執行:awk -f join.awk file1 file2

linux shell學習之awk ---新手筆記

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.