awk報告生成器
AWK,aho,weinberger,kernighan
GAWK,GNU awk
我們在linux上使用的awk其實是gawk的鏈接文件
基本用法
gawk [options] ‘program‘ file
program:PATTERN
語句之間用分號分割
ps:‘{print $1,$2,$3}’
options:
-F:指明輸入時用到的字段分隔符,默認是空白分隔符
cat/etc/fstab | tail -4 | awk ‘{print $1,$4}‘
打印出切片第一字段和第四字段
ps:用逗號分隔各個字段
1、內建變量:FS,輸入input fieldseperator OFS,輸出 RS=‘ ‘
NF,‘{print NF}‘ 每行字段數 $NF最後一字段
NR,‘{print NR}‘ 行編號 FNR,每個文件
ARGC,命令行參數的個數
ARGV
awk -v FS=‘:‘ -vOFS=‘-‘ ‘{print $1,$3}‘ /etc/passwd
指定輸入:分隔符,輸出-分隔符
2、自定義變量:-v var=value,區分大小寫
awk -vtest=‘hello‘ ‘BEGIN{print test}‘ /etc/fstab
awk‘{test="helo";print test,$1}‘ /etc/fstab
3、printf命令
格式化輸出,printf FORMAT,item1,item2,……
FORMAT必須給出,不回自動換行,需要顯示給出\n,需要分別為後面沒個item指定格式符
格式符:%c,ascii碼 %d,顯示十進制整數 %e,科學計數法 %f,浮點數 %g,%G科學計數或浮點數 %s顯示字符串 %u無符號 %%百分號自身 左對齊減號,右對齊加號
awk -F: ‘{printf"username:%-8s,uid:%d\n",$1,$3}‘ /etc/passwd
4、算數操作符:+,-,*,/,^,%
字符串操作符號:沒有符號的操作符字符串連接,賦值操作符,比較操作符,模式匹配~不匹配!~,邏輯操作符&&或||非
awk -F:‘{$3>=1000?usertype="common user":usertype="sysadmin orsysuser";printf "%8s:%-s\n",$1,usertype}‘ /etc/passwd
5、pattern
empty:空模式,匹配每一行
/pattern/僅處理匹配到的
relational關系表達式,結果為真為假,結果為真的才被處理,一般結果為非0值都為真
6、action
expressions表達式
controlstatements:if,while
compoundstatements組合語句
input statements
output statements
7、控制語句
if(條件){true}
if(條件){true} else {false}
while(條件){true}
do{循環}while()
for(expr1;expr2....){循環}
deletearray[index]刪除數組中元素
deletearray刪除整個數組
exit
awk -F:‘{if($3>=500){printf "commonusr:%-8s\n}",$1} else {printf"sysusr:%-8s\n",$1}}‘ /etc/passwd
awk -F:‘{if($NF=="/bin/bash") print $1}‘ /etc/passwd
awk‘{if(NF>5) print }‘ /etc/fstab
awk -F:‘/^root/{i=1;while(i<=NF){if(length($i)>=4){print $i,length($i)};i++}}‘./passwd
本文出自 “勤能補拙” 博客,請務必保留此出處http://echoroot.blog.51cto.com/11804540/1946163
awk報告生成器