perl語言中的AWK之基礎篇

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  

  
  
  
  
  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. 如  

  
  
  
  
  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. 例如: 

  
  
  
  
  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. < y       True if x is less than y.   
  3. <= y  True if x is less than or equal to y.   
  4. > y       True if x is greater than y.   
  5. >= 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. 例如: 

  
  
  
  
  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

 空模式是指 :匹配全部行
因爲篇幅限制字數限制不能所有介紹,若有錯誤,還望多多指正,多多討論,謝謝。下篇 將繼續awk的循環控制語句的使用,
相關文章
相關標籤/搜索