linux-awk

2018-12-30  本文已影响0人  zhangsanzhu

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 ) 将1 大写
substr() 截取字符串 substr ( 1,5 ) 截取掉元素1 的前 5 个元素,保留剩下的 , substr ( $1 , 5 , 10 ) 截取 5 到 10
/city/ 函数搜索包含city的行
/^1000/ 函数-yi
{ print ($2 > "t.txt" } > (覆盖)输出到文件 {print (1 "\t"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():随机数

上一篇下一篇

猜你喜欢

热点阅读