awk用法總結

2021-08-01 10:10:31 字數 1915 閱讀 2379

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