linux學習筆記 awk用法總結

2021-06-21 09:12:34 字數 4542 閱讀 6880

awk是一種優良的文字處理工具,linux及unix環境中現有的功能最強大的資料處理引擎之一.

這篇部落格是的讀書筆記。

//

//按列輸出

//

首先,用

netstat > netstat.txt

命令把netstat的結果重定向到netstat.txt中

結果類似這樣:

現在,我要列印第一列($1)和第四列($4),注意$0表示整行

awk '' netstat.txt
結果如下:

////過濾記錄

//

下面過濾條件為:第三列的值為0 && 第6列的值為established

awk '$3==0 && $6=="established"' netstat.txt

結果:

tcp        0      0 localhost:37745         localhost:4730          established

tcp 0 0 localhost:48344 localhost:4730 established

tcp 0 0 localhost:4730 localhost:48344 established

tcp 0 0 localhost:48342 localhost:4730 established

tcp 0 0 localhost:4730 localhost:37741 established

//

//內建變數

//

$0當前記錄(這個變數中存放著整個行的內容)

$1~$n

當前記錄的第n個字段,欄位間由fs分隔

fs輸入字段分隔符 預設是空格或tab

nf當前記錄中的字段個數,就是有多少列

nr

已經讀出的記錄數,就是行號,從1開始,如果有多個檔案話,這個值也是不斷累加中。

fnr當前記錄數,與nr不同的是,這個值會是各個檔案自己的行號

rs輸入的記錄分隔符, 預設為換行符

ofs

輸出字段分隔符, 預設也是空格

ors輸出的記錄分隔符,預設為換行符

filename

當前輸入檔案的名字

輸出行號的例子:

awk '$3==0 && $6=="established" || nr==1 ' netstat.txt

結果:

1 (w/o                 servers)

3 localhost:37745 localhost:4730 established

4 localhost:48344 localhost:4730 established

5 localhost:4730 localhost:48344 established

6 localhost:48342 localhost:4730 established

8 localhost:4730 localhost:37741 established

9 localhost:48340 localhost:4730 established

10 localhost:48341 localhost:4730 established

12 localhost:4730 localhost:37747 established

//

//指定分隔符

//

awk 'begin ' /etc/passwd

說明:begin

end

結果:

root 0 /root

bin 1 /bin

daemon 2 /sbin

adm 3 /var/adm

lp 4 /var/spool/lpd

sync 5 /sbin

上面的awk命令的另一種寫法是:

awk -f: '' /etc/passwd

////正則匹配

//

awk '$6 ~/est/ || nr==1 ' ofs="\t" netstat.txt

上面的命令中 $6 ~/est/部分就是正則匹配。表示對第6列使用正則, ~ 表示模式開始。/ /中是模式。

1       (w/o    servers)

3 localhost:37745 localhost:4730 established

4 localhost:48344 localhost:4730 established

5 localhost:4730 localhost:48344 established

6 localhost:48342 localhost:4730 established

//

//統計

//

列出當前目錄下所有php檔案的大小(即ls -l結果的第五列)

ls -l *.php | awk ''

計算當前目錄下所有php檔案的大小總和

ls -l *.php | awk ' end '

統計各個connection狀態(注意其中陣列的用法)

awk 'nr!=1 end ' netstat.txt

統計每個使用者的程序占用了多少記憶體

ps aux | awk 'nr!=1 end '

Linux 基礎 AWK 用法

awk end 原始檔 表示你需要去重的那一列,放到陣列a中 計數 b 0 去重 awk f 原始檔 f 表示以空格為分界符 gsub 為awk 內建函式 使用方式 gsub 0 斜槓內,就是你需要刪除的東西。斜槓內容一般為 字元 空格 引號 冒號 等等 根據需要刪除對應的字元即可。第二個引數為內建...

Linux命令之awk學習筆記

一 awk命令 root www awk 條件型別 1 條件型別 2 filename二 awk 後面接兩個單引號並加上大括號 來設定想要對資料進行的處理動作。在每一行的每個欄位都是有變數名稱的,那就是 1,2.等變數名稱。0代表 一整列資料 的意思 如圖 以上面的例子來說,第一行的 0 代表的就是...

學習Linux 關於AWK 命令筆記

一.awk簡介 awk是一種處理文字檔案的語言,是乙個強大的文字分析工具。它可以依次處理檔案的每一行,並讀取裡面的每乙個字段。對於日誌這樣的每行格式相同的文字檔案,awk可能是最方便的工具。1.awk語法 基於模式匹配檢查輸入文字,逐行處理並輸出 格式1 前置命令 awk 選項 條件 格式2 awk...