1. 程式人生 > >awk報告生成器

awk報告生成器

awk linux gawk

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=‘ ‘

輸入空格作為換行符 ORS=‘ ‘輸出時

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算數操作符:+,-,*,/,^,%

字符串操作符號:沒有符號的操作符字符串連接,賦值操作符,比較操作符,模式匹配~不匹配!~,邏輯操作符&&或||非

!,函數調用function(),條件表達式selector?if-true-expression:if-false-expression

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報告生成器