報告生成工具,每一行的每個字段分別進行格式化,而後進行顯示
******************************
支持使用變量、條件判斷、循環、數組
awk-->new awk-->nawk
按行進行逐字段過濾處理並顯示
*************切割後*****************
$0表示整行
$1 $2...依次表示第一個第二個...字段
**************用法格式****************
awk [options] 'script' FILE...
awk [options] '/pattern/{action}' FILE...
action:print $1,$2,$3
模式:
地址定界:/pat1/,/pat2/
/pattern/
expression:表達式
> >= < <= == != ~
BEGIN:執行前操作
END:執行後的收尾工作
awk的常用四種分隔符
輸入:
行分隔符
字段分隔符
輸出:
行分隔符
字段分隔符
########
字段間可任意寫入字符
awk -F : '/^root/{print "User name:",$1,"\nShell:", $7}' passwd
########
! 模式取反
df -h | awk '!/^Filesystem/{print $1}'
########
字段做條件判斷,表達式的使用
awk -F : '$3>=400{print $0}' passwd
awk -F : '$7~/bash$/{print $0}' passwd
########
BEGINEND
awk -F : 'BEGIN{print "User name\n-------------------"}$7~/bash$/{print $1}END{print "________________\n3 User"}' passwd
########
FS OFS定義在BEGIN
awk 'BEGIN{FS=":"}$3>=400{print $1}' passwd
awk 'BEGIN{FS=":";OFS="@"}$3>=400{print $1,$2}' passwd
*************內置變量*****************
NF:字段數 number of field
FS: field separator指定輸入分隔符,可在BEGIN中定義,指定時要使用"",默認爲空白
OFS:輸出時指定的分隔符,在BEGIN中定義,指定時要使用"",默認爲空白
**************練習****************
1.顯示GID小於500的組
awk -F : '$3<500{print $1}' /etc/group
awk 'BEGIN{FS=":"}$3<500{print $1}' /etc/group
2.顯示默認的shell爲nologin的用戶
awk -F : '$7~/nologin$/{print $1}' /etc/passwd
awk 'BEGIN{FS=":"}/nologin$/{print $1}' passwd
3,顯示eth0網卡文件的配置信息,注意,只顯示等號後面的值
awk -F = '{print $2}' /etc/sysconfig/network-scripts/ifcfg-eth0
awk 'BEGIN{FS="="}{print $2}' /etc/sysconfig/network-scripts/ifcfg-eth0
4.顯示/etc/sysctl.conf文件中定義的內核參數:只顯示名稱,
awk -F =' !/^#|^$/{print $1}'/etc/sysctl.conf
awk 'BEGIN{FS="="}!/^#|^$/{print $1}' /etc/sysctl.conf
5.顯示eth0網卡的ip地址,通過ifconfig命令結果進行過濾
ifconfig eth0 |awk '/inet addr/{print $2}' |awk -F : '{print $2}'
後續再加awk的高級部分