文本分析(awk)

awk 进行文本处理, 按行处理, -F 是文本分隔符, 默认空格; 获取分割的结果 $0 是所有结果, $1 取到第一个结果.

内置变量

  • NF 分隔之后的字段个数
  • ARGC 命令行参数个数
  • ARGV 命令行参数排列
  • ENVIRON 支持队列中系统环境变量的使用
  • FILENAME awk浏览的文件名
  • FNR 浏览文件的记录数
  • FS 设置输入域分隔符,等价于命令行 -F选项
  • NF 记录的域的个数
  • NR 已读的记录数
  • OFS 域分隔符
  • ORS 记录分隔符
  • RS 控制记录分隔符

内置函数

算术函数

  • 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 参数则使用某天的时间。返回先前的种子值。

字符串函数

  • length(string) 获取 string 的长度
  • substr(str,start,len) 返回子串, 从start开始截取长度为 len 的子串
  • tolower(str) 返回小写的副本
  • toupper(str) 返回大写的副本
  • index(str,find) str里存在子字符串find,就返回find的起始位置, 不存在就返回0
  • match(str,regexp) str 匹配正则表达式regexp, 存在匹配的子串就返回子串开始的位置, 不存在返回0, substr(str,RSTART,RLENGTH) 获取子串
  • sub(regexp, replacement,target) 将 target 里第一个符合regexp的替换成replacement
  • gsub(regexp, replacement,target) 将 target 里所有符合regexp的替换成replacement
  • split(str,array,[regexp]) 使用 regexp 分割字符串 str 至 array,regexp省略时用 FS

自定义变量

在命令中可以自定义变量, BEGIN{}中指定的指令可以在分隔调用前前执行, END{}在分隔全部执行后执行

0 Comments
Leave a Reply