linux-awk
awk基本结构
awk ‘BEGIN{ print “start”} pattern { commands } END { print “end” }’ file
一个awk脚本通常由3个部分组成:BEGIN语句块、END语句块和能够使用模式匹配的通用语句块。这3个部分是可选的,它们中任何一个部分都可以不出现在脚本中。脚本通常会被包含在单引用或双引号中
各种使用例子
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结尾的行
awk '/$1/{print $0}'
属性
属性 | 介绍 | 备注 | 例子 |
---|---|---|---|
$NF | 表示最后一个元素 | $NF-1倒数第二个元素 | |
NR | 当前行数 | ||
toupper() | 括号内元素置为大写 | toupper ( 1 大写 | |
substr() | 截取字符串 | substr ( 1 的前 5 个元素,保留剩下的 , substr ( $1 , 5 , 10 ) 截取 5 到 10 | |
/city/ | 函数搜索包含city的行 | ||
/^1000/ | 函数-yi | ||
{ print ($2 > "t.txt" } | > (覆盖)输出到文件 | {print (2) > "t.txt"} | |
{ print ($2 >> "t.txt" } | >> (追加)输出到文件 | print ($2 >> "t.txt" } | |
$0 | 当前行内容 |
内置变量
FILENAME:当前文件名
FS:字段分隔符,默认是空格和制表符。
RS:行分隔符,用于分割每一行,默认是换行符。
OFS:输出字段的分隔符,用于打印时分隔字段,默认为空格。
ORS:输出记录的分隔符,用于打印时分隔记录,默认为换行符。
OFMT:数字输出的格式,默认为%.6g。
内置函数:
tolower():字符转为小写。
length():返回字符串长度。
substr():返回子字符串。
sin():正弦。
cos():余弦。
sqrt():平方根。
rand():随机数
网友评论