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