Linux命令之awk

awk命令:
指令格式:awk ‘{pattern + action}’ {filenames}
其中 pattern 表示 awk 在數據中查找的內容,而 action 是在找到匹配內容時所執行的一系列命令。花括號不需要在程序中始終出現,但它們用於根據特定的模式對一系列指令進行分組。

(1) 記錄與字段
awk每次讀取文件的一行後,存入字段變量0 1,2, NF中,默認分隔符爲空格或製表符。(內置變量NF爲記錄的字段個數)

echo hello the world | awk ‘{print $1,$2}’ #輸出hello the

(2) 字段分隔符
通過-F或FS變量來設置分隔符

awk –F: ‘{print $1}’ filename              #設置分隔符爲:,並打印第一個字段
awk ‘BEGIN {FS = “:”} {print $1}’ filename     #同上

(3) 常用內置變量
ARGC 命令行參數個數
ARGV 命令行參數排列
ENVIRON 支持隊列中系統環境變量的使用
FILENAME awk瀏覽的文件名
FNR 瀏覽文件的記錄數
FS 設置輸入域分隔符,等價於命令行 -F選項
NF 瀏覽記錄的域的個數
NR 已讀的記錄數
OFS 輸出域分隔符
ORS 輸出記錄分隔符
RS 控制記錄分隔符

(4) 表達式與操作符
表達式由變量、常量、函數、正則表達式、操作符組成,awk中變量有字符變量和數字變量。如果沒有初始化變量,默認爲空字串或0。注意,字符操作一定要加引號。
操作符與C語言類似。

(5) 高級應用
if條件判斷;while循環;for循環;函數
常用函數:
[1]算術函數
函數名 說明
atan2( y, x ) 返回 y/x 的反正切。
cos( x ) 返回 x 的餘弦;x 是弧度。
sin( x ) 返回 x 的正弦;x 是弧度。
exp( x ) 返回 x 冪函數。
log( x ) 返回 x 的自然對數。
sqrt( x ) 返回 x 平方根。
int( x ) 返回 x 的截斷至整數的值。
rand( ) 返回任意數字 n,其中 0 <= n < 1。
srand( [Expr] ) 將 rand 函數的種子值設置爲 Expr 參數的值,或如果省略 Expr 參數則使用某天的時間。返回先前的種子值。

舉例:awk 'BEGIN{srand();fr=int(100*rand());print fr;}' #獲得兩位整型數

[2]字符串函數
函數名 說明
gsub( x, y,z ) 在字符串z中使用字符串y替換與正則表達式x相匹配的所有字符串,z默認爲0sub(x,y,z)z使yxz 0。
index( x,y ) 返回 x在y中出現的位置,從1開始。若x不存在於y中,則返回0。
length( x ) 返回 x 參數指定的字符串的長度,若未給出x參數,則返回整個記錄的長度。
split( x,A,y ) 將字串x按正則表達式y分割爲數組A中的元素。

舉例:awk 'BEGIN{info="this is a test2010test!";print index(info,"test");}' #定位test出現的位置,結果爲11

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章