awk是linux下的一个命令。对于其他命令的输出和文件的处理,功能非常强大。事实上,它更像是一种编程语言。它可以自定义变量、条件语句和循环。有数组,正则表达式,函数等等,他读取输出的方式,或者文件是一行一行的,按照你给的条件查找,在找到的行中进行操作。感觉他的设计思路真的很简单,但是结合实际情况,具体操作就没那么简单了。他有三种形式,awk,gawk,nawk。我们通常所说的awk其实就是gawk。选项-F后面跟一个定界符,意思是读取字段被输入定界符分隔-v进入变量模式,可以赋值和调用变量(调用不需要加$符号)POSIXoptions:GNUlong选项:(标准)-fprogfile--file=progfile-Ffs--field-separator=fs-vvar=val--assign=var=valShort选项:GNU长选项:(扩展)-b--characters-as-bytes-c--traditional-C--copyright-d[file]--dump-variables[=file]-e'program-text'--source='program-text'-Efile--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--versionvariable变量说明$n当前的第n个字段记录,字段由FS分隔。$0完整的输入记录。FS字段分隔符(默认为任何空格)。RS记录分隔符(默认为换行符)。NF当前记录中的字段数。(用定界符隔开代表一个字段)NR当前记录号。OFS输出字段分隔符(默认为空格)。ORS输出记录分隔符(默认为换行符)。OFMT数字的输出格式(默认%.6g)。FNR/NR但相对于当前文件。ARGC命令行参数的数量。ARGV包含一组命令行参数。ERRNO最后一个系统错误的描述。ARGIND当前文件在命令行中的位置(从0开始计数)。RSTART匹配函数匹配的字符串的第一个位置。SUBSEP数组下标分隔符(默认为\034)。CONVFMT数值转换格式(默认为%.6g)ENVIRON环境变量的关联数组。RLENGTH匹配函数匹配的字符串的长度。FILENAME当前文件名。IGNORECASE如果为true,则忽略大小写进行匹配。FIELDWIDTHS字段宽度列表(空格分隔)。operatoroperatordescription=+=-=*=/=%=^=**=assignment?:C条件表达式||逻辑还是&&逻辑与~~!匹配正则表达式和不匹配正则表达式<<=>>=!===关系运算符空格连接+-加减*/&乘除余数+-!一元加法、减法和逻辑非^***求幂++--增加或减少,作为前缀或后缀B匹配单词中的空字符串\<匹配单词开头的空字符串,锚点开始\>匹配单词结尾的空字符串,锚点结束\W匹配非字母数字单词\w匹配一个字母数字词\'匹配字符串末尾的空字符串\'匹配字符串开头的空字符串functionfunction-namesub匹配记录中最大、最左边的子字符串并用替换项替换它们的正则表达式细绳。如果未指定目标字符串,则默认使用整个记录。只在第一次匹配时发生替换gsubmatchesintheentiredocumentindex返回子串第一次??匹配到的位置,偏移量从位置1开始substr返回从位置1开始的子串,如果指定了长度如果实际超过长度,将返回整个字符串。split可以根据给定的分隔符将字符串分割成一个数组。如果不提供分隔符,则按当前FS值长度分割返回记录中的字符数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)sinesqrt(x)平方根srand(x)x是rand()函数int的种子(x)是四舍五入的,处理过程是不四舍五入的format用于指定以下每一项的输出格式;printf语句不会自动打印换行符;\nformat格式的指标都是以%开头,后面跟着一个字符;如下%c:显示字符的ASCII码;%f:显示浮点数;%g、%G:以科学计数形式或浮点形式显示数值;%s:显示字符串;%u:无符号整数;%%:显示%本身;%d,%i:十进制整数;%e,%E:以科学计数形式显示数值;modifierN:显示宽度;-:左对齐;+:显示值符号;
