linux-awk
awk基本結(jié)構(gòu)
awk ‘BEGIN{ print “start”} pattern { commands } END { print “end” }’ file
一個awk腳本通常由3個部分組成:BEGIN語句塊揽思、END語句塊和能夠使用模式匹配的通用語句塊官帘。這3個部分是可選的规哲,它們中任何一個部分都可以不出現(xiàn)在腳本中。腳本通常會被包含在單引用或雙引號中
各種使用例子
grep 'CompanyFacade' dubboProviderLogger.log | awk -F '>' '{print $2}'|awk -F '-' '$2 >= 2 {print NR ")" substr($1,19) "\t" $2}'
grep 'CompanyFacade' dubboProviderLogger.log | awk -F '>' '/getListByParam/ {print $2 }'| awk -F '-' '{if ($2>=2) print "這個是超過2ms的接口\n" $1 "\t" $2;}'
grep 'CompanyFacade' dubboProviderLogger.log | awk -F '>' '/city/{print substr($2,49,90)}'
grep 'CompanyFacade' dubboProviderLogger.log | awk -F '.' '/getListByParam/{count = $3 + $3 ; print $3 "\t" $4 "\t" count }'
grep 'CompanyFacade' dubboProviderLogger.log | awk -F '>' '/getListByParam/{print $2 }'| awk -F '"' '$8>360200 {print }'
grep 'CompanyFacade' dubboProviderLogger.log | awk -F '>' '/getListByParam/{print $2 }'| awk -F '-' '{print ($1 "\t" $2) > "t.txt" }'
grep 'CompanyFacade' dubboProviderLogger.log | awk -F '>' '/getListByParam/{print $2 }'| awk -F '-' '{if ($2>=10) print ">=10 count = " a++;else print "<10 count =" b++}'
//打印以1結(jié)尾的行
awk '/$1/{print $0}'
屬性
屬性 | 介紹 | 備注 | 例子 |
---|---|---|---|
$NF | 表示最后一個元素 | $NF-1倒數(shù)第二個元素 | |
NR | 當(dāng)前行數(shù) | ||
toupper() | 括號內(nèi)元素置為大寫 | toupper ( |
|
substr() | 截取字符串 | substr ( |
|
/city/ | 函數(shù)搜索包含city的行 | ||
/^1000/ | 函數(shù)-yi | ||
{ print ($2 > "t.txt" } | > (覆蓋)輸出到文件 | {print ( |
|
{ print ($2 >> "t.txt" } | >> (追加)輸出到文件 | print ($2 >> "t.txt" } | |
$0 | 當(dāng)前行內(nèi)容 |
內(nèi)置變量
FILENAME:當(dāng)前文件名
FS:字段分隔符,默認(rèn)是空格和制表符。
RS:行分隔符伟众,用于分割每一行,默認(rèn)是換行符拌倍。
OFS:輸出字段的分隔符赂鲤,用于打印時分隔字段,默認(rèn)為空格柱恤。
ORS:輸出記錄的分隔符数初,用于打印時分隔記錄,默認(rèn)為換行符梗顺。
OFMT:數(shù)字輸出的格式泡孩,默認(rèn)為%.6g。
內(nèi)置函數(shù):
tolower():字符轉(zhuǎn)為小寫寺谤。
length():返回字符串長度仑鸥。
substr():返回子字符串。
sin():正弦变屁。
cos():余弦眼俊。
sqrt():平方根。
rand():隨機數(shù)