awk 是处理文本文件的一个应用程序,几乎所有 Linux 系统都自带这个程序。
它依次处理文件的每一行,并读取里面的每一个字段。对于日志、CSV 那样的每行格式相同的文本文件, awk 可能是最方便的工具。
awk 其实不仅仅是工具软件,还是一种编程语言!
语法
$ awk [选项参数] 'script' var=value file(s) or $ awk [选项参数] -f scriptfile var=value file(s)点击复制复制失败已复制
选项参数说明:
-Ffs or--field-separatorfs
指定输入文件折分隔符,fs是一个字符串或者是一个正则表达式,如-F:。-vvar=value or--asignvar=value
赋值一个用户定义变量。-fscripfile or--filescriptfile
从脚本文件中读取awk命令。-mfnnn and-mrnnn
对nnn值设置内在限制,-mf选项限制分配给nnn的最大块数目;-mr选项限制记录的最大数目。这两个功能是Bell实验室版awk的扩展功能,在标准awk中不适用。-Wcompact or--compat,-Wtraditional or--traditional
在兼容模式下运行awk。所有awk的行为和标准的awk完全一样,所有的awk扩展都被忽略。-Wcopyleft or--copyleft,-Wcopyright or--copyright
打印简短的版权信息。-Whelp or--help,-Wusage or--usage
打印全部awk选项和每个选项的简短说明。-Wlint or--lint
打印不能向传统unix平台移植的结构的警告。-Wlint-old or--lint-old
打印关于不能向传统unix平台移植的结构的警告。-Wposix
打开兼容模式。但有以下限制,不识别:/x、函数关键字、func、换码序列以及当fs是一个空格时,将新行作为一个域分隔符;操作符**和**=不能代替^和^=;fflush无效。-Wre-interval or--re-inerval
允许间隔正则表达式的使用,参考(grep中的Posix字符类),如括号表达式[[:alpha:]]。-Wsource program-text or--sourceprogram-text
使用program-text作为源代码,可与-f命令混用。-Wversion or--version
打印bug报告信息的版本。
运算符
| 运算符 | 描述 |
=+=-=*=/=%=^=**= |
赋值 |
?: |
C条件表达式 |
|| |
逻辑或 |
&& |
逻辑与 |
~ 和 !~ |
匹配正则表达式和不匹配正则表达式 |
<<=>>=!=== |
关系运算符 |
| 空格 | 连接 |
+- |
加,减 |
*/% |
乘,除与求余 |
+-! |
一元加,减和逻辑非 |
^*** |
求幂 |
++-- |
增加或减少,作为前缀或后缀 |
$ |
字段引用 |
in |
数组成员 |