awk總結

一:awk重要性


"一個linux工程師水平的高低很大部分取決於其處理文本內容的水平"

awk與grep,sed等,並列爲最重要的3個文本處理工具


grep:global file regular expression search and print it out,屬於文本搜索工具

sed:stream editor,流文本編輯器

awk:格式化文本生成器


二:awk的使用


awk [-common-option] 'pattern{action}' file1 file2...


一.common-option

-F 規定域分割符,默認爲"空內容"

-v 可規定自定義變量

-f 規定腳本


二.pattern

1.BEGIN : awk 'BEGIN{print "hello world"}'  此語句非常特殊,省略了pattern和對象

2.END: awk -F: 'END{print "hello"}' /etc/passwd

(BEGIN 和 END是特殊的pattern,僅在命令運行的前後運行一次)

3.正則表達式

4.表達式 $3>20

5.模式匹配表達式 $3~  (跟我讀:域3匹配) ; $3~!(跟我讀:域3匹配不到)

6.範圍模板

/pat1/,/pat2/匹配兩個模板之間的行:

範例

   cat /etc/passwd -n

   awk -F: '/se$/,/in$/{print $0,NR}' /etc/passwd

三.action

1.變量或數組賦值

2.輸出 或輸出重定向 print,printf

3.函數

4.流程控制


四.變量

1.幾個特殊的內置變量

NF (number of field) 域的個數

FS(field seperator) 域分割符

RS(record seperator) 行分割符

NR(number of record) 行數,相對於所有的

FNR(file number of record)

OFS(output filed seperator ) 域輸出時的分割符

ORS(output raw seperator) 行輸出的分隔符

ARGC:保存awk命令行參數個數

ARGV:保存awk命令行的參數

FILENAME:保存awk正在處理的文件名

ENVIRON:保存awk運行時.shell的環境變量

2.自定義變量

變量的命名跟C語言一樣,

可自定義關係數組

五.運算

1.比較運算

2.邏輯運算

3.數值運算

4.匹配運算.~/RE/

六.流程控制

if-else ; while ; do-while ; for ; next ;break ;continue

七.函數

1.內置字符串函數

split(filed,variable,FS)  結果存在variable數組中

length()返回域或字符串的長度

substr(string,start-number[,length-number])

tolower(string)

toupper(string)

2.內置數學函數

sin(),cos(),int(),rand()

3.自定義函數

function fname(var1,var2){ return ;} 最好放在action語句外部的任意位置


八:awk腳本

#!/usr/bin/awk


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章