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

Linux報告生成器工具awk

linux 報告 生成器

Linux報告生成器工具awk

awk:根據輸入的信息格式化後顯示出來

1.1、awk基本用法

awk [options] ‘script‘ file1,file2,....

或 awk [options] ‘PATTERN [ACTION]‘ file1,file2....

示例:awk ‘{print $1}‘ test.txt

options:

-F:定義分隔符

示例awk -F: 以冒號為分隔符

1.2、awk內置變量

(1)記錄變量

FS:設置默認分割字符 示例awk -F: 以冒號為分隔符

RS:設置默認換行符

OFS:設置默認輸出分隔符

ORS:設置默認輸出行分隔符

(2)數據變量

NR:awk命令所處理的記錄(行)數,若有多個文件,這個記錄數為其總數

FNR:awk正處理的記錄(行)是當前這個文件中被總共處理的記錄(行)數

NF:當前記錄(行)的字段個數

ARGV:數組,保存命令行本身這個字符串

ARGC:awk命令的參數

FILENAME:awk命令所處理的文件的名稱

ENVIRON:當前shell環境變量及其值的關聯數組

1.3、print的使用格式

print item1,item2,...

各項目之間使用逗號隔開,輸出則以空格隔開

1.4、printf

與print不同之處在於,printf需要指定format

使用格式:printf format,item1,item2...

format格式的指示符都是以%開頭,後跟一個字符

%c:顯示字符的ASCII碼

%d,%i:十進制整數

%f:顯示浮點數

%s:顯示字符串

%%:顯示%自身

格式修飾符

N:顯示寬度

-:左對齊

+:顯示數值符號

示例:awk -F: ‘{PRINTF "%-15S" %i\n,$1,$3}‘ /etc/passwd


1.5、awk的操作符

(1)算數操作符

-x:負值

+x:轉換為數值

(2)賦值操作符

=

+=

%=

(3)比較操作符

==:相等

!=:不等

(4)表達式間的邏輯關系符

&&

||


1.6、awk的模式pattern

使用格式:awk ‘pattern{action}‘ file1 file2

常見的模式類型

1 正則表達式,/pattern/

2 表達式,其中~和!~表示匹配與不匹配

3 指定匹配範圍,格式為pattern1,pattern2;從匹配pattern1開始到匹配到 pattern2結束

4 BEGIN/END:特殊模式,僅在awk命令執行前運行一次或結束前運行一次

5 Empty(空模式):即匹配任意行

常見的acton

表達式

控制語句for等

if(condition)(then...)else{[...]}

while(condition){語句1,語句2....}

do{語句1,語句2....}while(condition)

for(condition){語句1,語句2....}

switch(表達式){case 值或正則表達式:語句1...default:語句1...}

復合語句

輸入輸出語句

break和continue常用於循環或case語句中

next:提前結束對本行文本的處理,並接著處理下一行

示例:顯示其ID好為奇數的用戶

awk -F:‘{if($3%2==0) next;print $1,$3}‘ /etc/passwd

1.7、awk中使用數組

array[數組下標或索引]

netstat -ant | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}‘

每出現一被/^tcp/模式匹配到的行,數組S[$NF]就加1,NF為當前匹配到的行的最後一個字段,

此處用其值做為數組S的元素索引;

1.8、awk的內置函數

split:分割函數

使用方法split(string,A,pattern):將string按pattern進行分割,存儲為A[1],A[2]

length([string])

返回string字符串中字符的個數;

substr(string, start [, length])

取string字符串中的子串,從start開始,取length個;start從1開始計數;

system(command)

執行系統command並將結果返回至awk命令

systime()

取系統當前時間

tolower(string)

將string中的所有字母轉為小寫

toupper(s)

將s中的所有字母轉為大寫


十一、用戶自定義函數


自定義函數使用function關鍵字。格式如下:


function F_NAME([variable]) 定義自定義函數

{

statements

}

F_NAME:使用自定義函數

函數還可以使用return語句返回值,格式為“return value”。


本文出自 “術業有專攻” 博客,請務必保留此出處http://fuvip.blog.51cto.com/9276123/1983135

Linux報告生成器工具awk