perl語言中的AWK之基礎篇
一:AWK與perl
  1. 1.?Perl,我們并不陌生了到目前為止,它在web編程中的強大作用,對于每個web開發者而言,重要性不言而喻,
  2. 由于perl借取了C、sed、awk、shell?scripting以及很多其他程序語言的特性。
  3. 其中最重要的特性是它內部集成了正則表達式的功能,以及巨大的第三方代碼庫CPAN。
  4. 簡而言之,Perl?象C一樣強大,象awk、sed等腳本描述語言一樣方便,由此看來在perl語言中,AWK占據著重要的一席之地。
  5. 這里我們不去重點的說perl語句而是介紹一下其重要的組成部分AWK的基礎內容,
  6. 下面我們就來揭開perl中的awk的神秘面紗吧!?
二:AWK簡介
  1. what?is?awk??對于初學者來說這是個模式的代名詞,其實awk是三位創造者Aho、Weinberger和Kernighan統稱,
  2. 簡單的來說AWK?是一種用于處理文本的編程語言工具??
  3. wk可以做些什么?由于其可以進行樣式裝入、流控制、數學運算符、進程控制語句甚至于內置的變量和函數。
  4. 它具備了一個完整的語言所應具有的幾乎所有精美特性,所以其三位創建者已將它正式定義為“樣式掃描和處理語言”。
  5. 它允許您創建簡短的程序,這些程序讀取輸入文件、為數據排序、處理數據、對輸入執行計算以及生成報表,還有無數其他的功能。??
三:AWK處理文本的流程:
  1. awk在處理文件時,首先掃描文件中的每一行,查找與命令行中所給定內容相匹配的模式。
  2. 如果發現匹配內容,則進行下一個編程步驟。如果找不到匹配內容,則繼續處理下一行?
四:AWK的使用
  1. AWK的?語法格式:??
  2. Awk?[options]?‘scritpts’??filename??
  3. ?或者awk?[options]?‘partern?[actions]?’?filename??
  4. [options]:??
  5. -F:?指定awk?處理文本的行時的分隔符
例如?

  1. 常用的awk內置的三個變量?OFS??FS??NF???
  2. -FS?指定字段分隔符
  3. 例如 ?
  1. Awk??-v?FS=:?‘{print?$2}’?/etc/passwd??

perl語言是干嘛的、

  1. -v?OFS=?定義awk?輸出時的字符分隔符?
  2. 例如:?Awk?–v?OFS=#?‘{print?$1,$2}’?/etc/passwd

  1. 注:上例中的在輸入$1和$2,$1,$2的形式是分別輸出$1和$2.?$1?$2的形式是將$1和$2合并后輸出??
  2. 如??

perl語言length,

  1. ?NF?表示awk處理一行時的字段總數??
  2. ?例如:輸出一行的最后一個字段??
  3. Awk?‘{print?$NF}’?/etc/passwd?

  1. 注:顯示一行的倒數第三個字段???

  1. printf?的使用??
  2. 格式:printf?format?item1,item2,……??
  3. ?注意:??
  4. 1:與print命令的最大不同是,printf?需要指定format??
  5. 2:format用于指定后面的每個item的輸出格式??
  6. 3:printf語句不會自動打印換行符?\n??
  7. 4:format格式的指示符都以%開頭,后跟一個字符??
  8. format:??
  9. %c?:顯示字符的ASCII碼??
  10. %d,%i?:顯示字符的十進制整數??
  11. %e,$E?科學計數法顯示數值??
  12. %f?:顯示浮點數??
  13. %g?,%G?:以科學計數法的格式或者浮點數的格式顯示數值??
  14. %s??顯示字符串??
  15. %u??顯示無符號整數??
  16. %%?顯示%自身??
  17. 另外format?還可以添加修飾符??
  18. N:顯示寬度??
  19. -:左對齊??
  20. +:顯示數值符號??
  21. 例如:?

perl中不包含?

  1. Awk?中使用?輸出重定向??
  2. print?items?>?output-file??
  3. print?items?>>?output-file??
  4. print?items?|?command???
awk的操作符:?
  1. 算術操作符:??
  2. -x:?負值??
  3. +x:?轉換為數值;??
  4. x^y:???
  5. x**y:?次方??
  6. x*y:?乘法??
  7. x/y:除法??
  8. x+y:??
  9. x-y:??
  10. x%y:??
  11. 字符串操作符:??
  12. 只有一個,而且不用寫出來,用于實現字符串連接;??
  13. 賦值操作符:??
  14. =??
  15. +=??
  16. -=??
  17. *=??
  18. /=??
  19. %=??
  20. ^=??
  21. **=??
  22. ++??
  23. --??
  24. 需要注意的是,如果某模式為=號,此時使用/=/可能會有語法錯誤,應以/[=]/替代;??
  25. 布爾值?
  26. awk中,任何非0值或非空字符串都為真,反之就為假??
  1. ?比較操作符:??
  2. x?<?y???????True?if?x?is?less?than?y.???
  3. x?<=?y??True?if?x?is?less?than?or?equal?to?y.???
  4. x?>?y???????True?if?x?is?greater?than?y.???
  5. x?>=?y??True?if?x?is?greater?than?or?equal?to?y.???
  6. x?==?y??True?if?x?is?equal?to?y.???
  7. x?!=?y??True?if?x?is?not?equal?to?y.???
  8. x?~?y??????True?if?the?string?x?matches?the?regexp?denoted?by?y.???
  9. x?!~?y??True?if?the?string?x?does?not?match?the?regexp?denoted?by?y.???
  10. subscript?in?array????True?if?the?array?array?has?an?element?with?the?subscript?subscript??
  11. ?表達式間的邏輯關系符:??
  12. ?&&??
  13. ||?
  14. 條件表達式:??
  15. selector?if-true-exp:if-false-exp??
  16. ?selector?:條件表達式??
  17. ?if-true-exp:statement??
  18. ?if-false-exp:?statement??
  • 下面我們來重點說說awk的模式使用
  1. awk的模式:??
  2. awk?[options]?‘parten’?‘print?….’?filename??
  3. parten:??
  4. 1:正則表達式?格式為/regular?expression/??
  5. 2:?表達式??其值非0或者非空字符時滿足的條件??例如:$1?~?/user/?或者?$1?==?‘user’??
  6. 用運算符~(匹配)和?~?!(不匹配)??
  7. 例如:?

perl在文件中加入幾行、

  1. 指匹配范圍格式為pat1,pat2?(pat代表模式)同sed用法??
  2. ?BEGIN/END?特殊格式???
  3. ???BEGIN?:在awk執行動作之前的處理動作??
  4. ????讓用戶指定在第一條輸入記錄被處理之前所發生的動作,通常可在這里設置全局變量??
  5. ?END:在awk?執行動作完成后執行的動作??
  6. ????讓用戶在最后一條輸入記錄被讀取之后發生的動作??
  7. 例如:?
  8. Awk?–F:’$NF?~/bash/?{print?“username?bash”?;printf?“%-10s?%s\n,$1,$NF”}’?/etc?/passwd

perl腳本語法、

空模式是指 :匹配所有行
由于篇幅限制字數限制不能全部介紹,如有錯誤,還望多多指正,多多討論,謝謝。下篇將繼續awk的循環控制語句的使用,