awk 主要用於資料提取
執行awk,需要乙個告訴awk怎麼做的awk程式。
awk是由一系列指令組成,每個指令是由乙個搜尋模式和乙個執行動作組成,多個指令之間用換行符分開
pattern \n
pattern
執行awk有兩種方式,
1,awk程式很短,可以直接寫在執行awk的命令列中
2,awk程式比較長,通常放在乙個檔案中,使用-f來指出awk檔案,檔案一般使用.awk做為字尾
awk常用的選項有:
-f fs 用於指定資料的列分隔符,預設的是空格,
對於二進位制分隔符,awk只支援8進製的數值,比如awk -f '\0x0f',就應該寫成awk -f '\17'
-v var=value指定value給var,這些變數值用於awk程式的begin塊
-f 指定執行awk時的檔案,執行awk的第二種方式
begin end
begin塊的作用主要為宣告變數,對於已有變數進行賦值,在讀取檔案開始執行之前呼叫
end塊的作用主要為在檔案處理結束之後呼叫,比如列印檔案有多少行被處理,等等。
awk變數
$1 $2………………從1開始,不是從0開始
nf 讀取的一行文字的列數
nr 檔案的當前行數
使用:下面所有的栗子都圍繞test.txt。
test.txt 檔案內容為:
linux - sysadmin
databases - oracle, mysql etc
security - firewall, network, online etc.
cool - websites
1,awk '' test.txt
列印以空格做為分隔符的每一行的第一列
2,awk -f'-' '' test.txt
列印以"-"做為分隔符的每一行的第二列
如果把awk程式放在檔案中print2line.awk
begin
執行方式為:awk -f print2line.awk test.txt
執行結果為:
sysadmin
oracle, mysql etc
firewall, network, online etc.
websites
3,awk中使用if
awk -f'-' '' test.txt //注意sysadmin前面有個空格
輸出為: sysadmin
4,awk中使用正則
awk -f'-' '' test.txt //注意sysadmin前面沒有空格
輸出為: sysadmin
5 awk中使用迴圈,(for while do…while)
awk '' test.txt //可以看到每次print都會輸出乙個換行
輸出結果:linux
-sysadmin
databases
-oracle,
security
-firewall,
cool
-websites
6 awk中進行算術運算,比如列印awk總共執行了檔案的多少行
begin
}end
7 awk中還可以包含陣列
myarr[1]="one";
myarr[2]="two";
for(x in myarr)' test.txt //注意,當有多個命令同時執行時,可以使用分號分開,如果多條命令是同乙個條件滿足才執行,則需要用{}括起來。
9 shell中使用awk的輸出變數
myvalue=`awk -f "-" '' test.txt`
注意awk和最後乙個符號,是數字1左邊那個按鍵。
執行 echo $z,輸出為linux
AWK 用法總結
語法 awk options script var value files 常用命令選項 awk簡介 操作由乙個或者多個命令 函式 表示式組成 之間有換行符或者分號隔開,並且位於大括號內 awk begin pattern end file 乙個awk指令碼通常由 begin語句塊 pattern語...
linux學習筆記 awk用法總結
awk是一種優良的文字處理工具,linux及unix環境中現有的功能最強大的資料處理引擎之一.這篇部落格是的讀書筆記。按列輸出 首先,用 netstat netstat.txt 命令把netstat的結果重定向到netstat.txt中 結果類似這樣 現在,我要列印第一列 1 和第四列 4 注意 0...
awk用法小結
awk 用法 awk pattern 變數名 含義 argc 命令列變元個數 argv 命令列變元陣列 filename 當前輸入檔名 fnr 當前檔案中的記錄號 fs 輸入域分隔符,預設為乙個空格 rs 輸入記錄分隔符 nf 當前記錄裡域個數 nr 到目前為止記錄數 ofs 輸出域分隔符 ors ...