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