awk 手册

awk是linux下的一个命令,他对其余命令的输出,对文件的处理都十分强大,其实他更像一门编程语言,他能够自定义变量,有条件语句,有循环,有数组,有正则,有函数等。他读取输出,或者文件的方式是一行,一行的读,根据你给出的条件进行查找,并在找出来的行中进行操做,感受他的设计思想,真的很简单,可是结合实际状况,具体操做起来就没有那么简单了。他有三种形势,awk,gawk,nawk,平时所说的awk其实就是gawk。linux

选项

-F 紧跟分隔符,表示读入的字段以输入的分隔符分割
-v 进入变量模式 能够进行变量的赋值及调用(调用不须要加 $ 符)正则表达式

POSIX options:      GNU long options: (standard)
-f progfile         --file=progfile
-F fs               --field-separator=fs
-v var=val          --assign=var=val
Short options:      GNU long options: (extensions)
-b                  --characters-as-bytes
-c                  --traditional
-C                  --copyright
-d[file]            --dump-variables[=file]
-e 'program-text'   --source='program-text'
-E file             --exec=file
-g                  --gen-pot
-h                  --help
-L [fatal]          --lint[=fatal]
-n                  --non-decimal-data
-N                  --use-lc-numeric
-O                  --optimize
-p[file]            --profile[=file]
-P                  --posix
-r                  --re-interval
-S                  --sandbox
-t                  --lint-old
-V                  --version

变量

变量          描述
$n           当前记录的第n个字段,字段间由 FS分隔。
$0           完整的输入记录。
FS           字段分隔符(默认是任何空格)。
RS           记录分隔符(默认是一个换行符)。
NF           当前记录中的字段数。(分隔符隔开的表明一个字段)
NR           当前记录数。
OFS          输出字段分隔符(默认值是一个空格)。
ORS          输出记录分隔符(默认值是一个换行符)。
OFMT         数字的输出格式(默认值是%.6g)。
FNR/NR       但相对于当前文件。
ARGC         命 令行参数的数目。
ARGV         包 含命令行参数的数组。
ERRNO        最后一个系统错误的描述。
ARGIND       命令行中当前文件的位置(从0开始算)。
RSTART       由match函数所匹配的字符串的第一个位置。
SUBSEP       数组下标分隔符(默认值是\034)。
CONVFMT      数字转换格式(默认值为%.6g)
ENVIRON      环 境变量关联数组。
RLENGTH      由match函数所匹配的字符串的长度。
FILENAME     当前文件名。
IGNORECASE   若是为真,则进行忽略大小写的匹配。
FIELDWIDTHS  字段宽度列表(用空格键分隔)。

运算符

运算符                      描述
= += -= *= /= %= ^= **=    赋值
?:                         C条件表达式
||                         逻辑或
&&                         逻辑与
~ ~!                       匹配正则表达式和不匹配正则表达式
< <= > >= != ==            关系运算符
空格                        链接
+ -                        加,减
* / &                      乘,除与求余
+ - !                      一元加,减和逻辑非
^ ***                      求幂
++ --                      增长或减小,做为前缀或后缀
$                          字段引用
in                         数组成员

awk的正则

匹配符   描述
\Y      匹配一个单词开头或者末尾的空字符串
\B      匹配单词内的空字符串
\<      匹配一个单词的开头的空字符串,锚定开始
\>      匹配一个单词的末尾的空字符串,锚定末尾
\W      匹配一个非字母数字组成的单词
\w      匹配一个字母数字组成的单词
\'      匹配字符串末尾的一个空字符串
\‘      匹配字符串开头的一个空字符串

字符串函数

函数名       描述
sub         匹配记录中最大、最靠左边的子字符串的正则表达式,并用替换字符串替换这些字符串。若是没有指定目标字符串就默认使用整个记录。替换只发生在第一次匹配的 时候
gsub        整个文档中进行匹配
index       返回子字符串第一次被匹配的位置,偏移量从位置1开始
substr      返回从位置1开始的子字符串,若是指定长度超过实际长度,就返回整个字符串
split       可按给定的分隔符把字符串分割为一个数组。若是分隔符没提供,则按当前FS值进行分割
length      返回记录的字符数
match       返回在字符串中正则表达式位置的索引,若是找不到指定的正则表达式则返回0。match函数会设置内建变量RSTART为字符串中子字符串的开始位 置,RLENGTH为到子字符串末尾的字符个数。substr可利于这些变量来截取字符串
toupper 和 tolower   可用于字符串大小间的转换,该功能只在gawk中有效

数学函数

函数名           返回值
atan2(x,y) y,x  范围内的余切
cos(x)          余弦函数
exp(x)          求幂
int(x)          取整
log(x)          天然对数
rand()          随机数
sin(x)          正弦
sqrt(x)         平方根
srand(x)        x是rand()函数的种子
int(x)          取整,过程没有舍入
rand()          产生一个大于等于0而小于1的随机数

format 的使用

要点编程

  1. 其与print命令的最大不一样是,printf须要指定format;
  2. format用于指定后面的每一个item的输出格式;
  3. printf语句不会自动打印换行符;\n

format格式的指示符都以%开头,后跟一个字符;以下数组

%c:     显示字符的ASCII码;
%f:     显示浮点数;
%g,     %G: 以科学计数法的格式或浮点数的格式显示数值;
%s:     显示字符串;
%u:     无符号整数;
%%:     显示%自身;
%d, %i:十进制整数;
%e, %E:科学计数法显示数值;

修饰符编程语言

N: 显示宽度;
-: 左对齐;
+:显示数值符号;

原文连接:http://linux.51yip.com/search...函数

相关文章
相关标签/搜索