這一次要記的是另一個指令:"awk"!這個工具善於處理已整理過、格式化的資料,如ps aux、/etc/passwd等等。它的基本格式如下:awk '樣式命令{動作}' "檔案"
a) awk預設的欄位分隔符號是空白 (Space)鍵或是TAB鍵。
b) $1, $2, $3代表該行的第1欄位、第2欄位、第3欄位;$0則是代表整行資料。
c) awk的內建變數:
NF:每一行 ($0)所擁有的欄位總數。
NR:目前是處理第幾行的資料。
FS:目前的分隔字元,預設值是空白 (Space)鍵。
[root@localhost ~] awk "/root/" /etc/passwd [root@localhost ~] awk '/root/' /etc/passwd在檔案中尋找含有"root"字串的行。
[root@localhost ~] awk '{print $1,$4}' /proc/net/arp僅顯示檔案中每一行的第1欄位和第4欄位。
[root@localhost ~] awk '/eth/{print $2,$10}' /proc/net/dev在檔案中僅顯示含有"eth"字串的那一行的第2欄位和第10欄位。
[root@localhost ~] awk -F ':' '/root/{print $6,$7}' /etc/passwd在檔案中尋找含有"root"字串的行,且欄位分隔符號為':',並秀出第6欄位和第7欄位。
[root@localhost ~] awk -F ':' 'BEGIN{OFS="+++"}/root/{print $6,$7}' /etc/passwd [root@localhost ~] awk -F ':' '/root/{print $6 "+++" $7}' /etc/passwd輸出結果同上,但把輸出結果的欄位分隔符號變為"+++"。
[root@localhost ~] awk -F ':' '/eth.|ppp.|wlan./{print $1}' /proc/net/dev在檔案中,尋找含有"eth."、或"ppp."、或"wlan."字串的行,且欄位分隔符號為':',僅顯示第1欄位。
此一指令的功能在尋找網路設備的名稱。
[root@localhost ~] awk -F ':' '/root/{print NR "," NF}' /etc/passwd在/etc/passwd檔案中,欄位分隔符號為':';尋找含有"root"字串的行,秀出「含有"root"的字串是在第幾行」和該行有幾個欄位,分隔符號為','。
[root@localhost ~] awk '{FS=":"}$3<10{print $0}' /etc/passwd在檔案中,欄位的分隔符號為':',第3欄位的值小於10,把整行秀出來!
沒有留言:
張貼留言