AWK是一种优良的文本处理工具。它不仅是linux中也是任何环境中现有的功能最强大的数据处理引擎之一。这种编程及数据库访问语言(其名称得自于它的创始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏的首个字母)的最大功能取决于一个人所拥有的知识
一、AWK的用法:
1、在命令行模式的直接使用。 格式为: awk ‘pattern {action}’
2、将awk命令写入脚本,并以#!/bin/awk -f命令解释器作为脚本的首行,设置脚本的可执行权限,通过键入脚本名称来调用它。格式为./testscript.awk filename。等同于shell脚本的方法。
3、将awk命令插入一个单独文件然后执行。格式为 awk -f awkscript filename
第一种格式常见的是awk "BEGIN {print "this is the start"}{print $1,$2,$3}END{print "this is the end"}" filename。其中BEGIN和END中间是模式,END后是动作。BEGIN和END可以省去,模式一般是匹配搜索使用
二、AWK排查错误常见的问题
1、确保整个AWK用单引号括起来;2、确保单引号内所有的括号或引号成对出现;3、确保用大括号括起动作语句,用小括号括起条件语句;4有时候要检查是否有文件名或者BEGIN等
三、AWK内置字符串变量函数
| gsub(r,s) | 在整个$0中用s代替r |
| gsub(r,s,t) | 在整个t中用s替代r |
| index(s,t) | 返回s中字符串t的第一位置 |
| length(s) | 返回s长度 |
| match(s,r) | 测试s是否包含匹配r的字符串 |
| split(s,a,fs) | 在fs上将s分成序列a,放在数组a里。返回段数的数值, |
| sprint(fmt,exp) | 返回经fmt格式化后的exp |
| sub(r,s) | 用$0中最左边最长的子串代替s |
| substr(s,p) | 返回字符串s中从p开始的后缀部分 |
| substr(s,p,n) | 返回字符串s中从p开始长度为n的后缀部分 |
四、AWK的内置环境变量
| $n | 当前记录的第n个字段,字段间由FS分隔。 |
| $0 | 完整的输入记录。在文本中一般指行信息内容 |
| ARGC | 命令行参数的数目。 |
| ARGIND | 命令行中当前文件的位置(从0开始算)。 |
| ARGV | 包含命令行参数的数组。 |
| CONVFMT | 数字转换格式(默认值为%.6g) |
| ENVIRON | 环境变量关联数组。 |
| ERRNO | 最后一个系统错误的描述。 |
| FIELDWIDTHS | 字段宽度列表(用空格键分隔)。 |
| FILENAME | 当前文件名。 |
| FNR | 同NR,但相对于当前文件。 |
| FS | 字段分隔符(默认是任何空格)。可以用户指定 |
| IGNORECASE | 如果为真,则进行忽略大小写的匹配。 |
| NF | 当前记录中的字段数。$NF指最后一个段内容 |
| NR | 当前记录数。在文本中一般指多少行 |
| OFMT | 数字的输出格式(默认值是%.6g)。 |
| OFS | 输出字段分隔符(默认值是一个空格)。 |
| ORS | 输出记录分隔符(默认值是一个换行符)。 |
| RLENGTH | 由match函数所匹配的字符串的长度。 |
| RS | 记录分隔符(默认是一个换行符)。 |
| RSTART | 由match函数所匹配的字符串的第一个位置。 |
| SUBSEP | 数组下标分隔符(默认值是 34)。 |
五、AWK内置操作符
| = += -= *= /= %= ^= **= | 赋值 如a+=10代表a+10 |
| ?: | C条件表达式,a>b?a:b表示a大于b如为真返回a,如为假返回b |
| || | 逻辑或。只要一个为真即为真。 |
| && | 逻辑与。只要一个为假即为假。需两个同时为真才为真。 |
| ~ ~! | 匹配正则表达式和不匹配正则表达式。经常针对文本搜索 |
| < <= > >= != == | 关系运算符 |
| 空格 | 连接 |
| + - | 加,减 |
| * / & | 乘,除与求余 |
| + - ! | 一元加,减和逻辑非 |
| ^ *** | 求幂 |
| ++ -- | 增加或减少,作为前缀或后缀。这个一定要区分清楚++a与a++ |
| $ | 字段引用 |
| in | 数组成员 |
六、AWK元字符:(转义字符)、^ $ [] | * + ?。其中+和?只能在AWK中使用不能再sed和grep中使用。+表示匹配一个或多个字符;?表示匹配0或1个字符。
相关阅读:sed与awk常用功能 http://www.linuxidc.com/Linux/2013-06/86099.htmLinux下shell编程常用grepawksed语法 http://www.linuxidc.com/Linux/2013-07/87047.htmLinux下Shell编程——awk编程 http://www.linuxidc.com/Linux/2013-06/85527.htm文本处理工具awk详解 http://www.linuxidc.com/Linux/2013-05/84248.htmLinux awk命令使用详解 http://www.linuxidc.com/Linux/2012-12/77082.htm
更多详情见请继续阅读下一页的精彩内容: http://www.linuxidc.com/Linux/2013-10/91892p2.htm
RedHat Enterprise Linux 6.X系统双网卡绑定操作实例通过替换Linux rm命令防止误删除相关资讯 awk
- 使用 awk 过滤文本或文件中的字符 (07月25日)
- Linux 管理员都应该会的命令:sed (01月13日)
- Linux awk文本分析工具 (12/13/2015 16:29:12)
| - 使用awk格式化输出文本 (04月14日)
- 使用awk批量杀进程的命令 (12/20/2015 15:36:24)
- 使用 Linux/Unix 进行文本处理 (11/23/2015 09:54:13)
|
本文评论 查看全部评论 (0)