# Linux命令——awk ## awk * **功能**:模式匹配语言 * 参考:[《awk工作原理》](http://man.linuxde.net/awk#awk的工作原理) * **awk**是一种编程语言,用于在*nix下对`文本`和`数据`进行处理; * 数据可以来自标准输入(stdin)、一个或多个文件,或其它命令的输出; * 它支持**用户自定义函数**和**动态正则表达式**等先进功能,是*nix下的一个强大编程工具; * 它可以在命令行中使用,但更多是**作为脚本来使用**; * awk有很多内建的功能,比如数组、函数等,这是它和C语言的相同之处; * 灵活性是awk一大的优势。 * awk脚本是由**模式**和**操作**组成的; * 模式可以是以下任意一个: * 正则表达式:使用通配符的扩展集; * 关系表达式:使用运算符进行操作,可以是字符串或数字的比较测试。 * 模式匹配表达式:用运算符`~`(匹配)和`~!`(不匹配); * BEGIN语句块、pattern语句块、END语句块; * 操作由一个或多个命令、函数、表达式组成,之间由换行符或分号隔开,并位于大括号内,主要部分是: * 变量或数组赋值 * 输出命令 * 内置函数 * 控制流语句 * **选项**: * -F fs fs指定输入分隔符,fs可以是字符串或正则表达式,如-F: -v var=value 赋值一个用户定义变量,将外部变量传递给awk -f scripfile 从脚本文件中读取awk命令 -m[fr] val 对val值设置内在限制,-mf选项限制分配给val的最大块数目;-mr选项限制记录的最大数目。这两个功能是Bell实验室版awk的扩展功能,在标准awk中不适用。 * -F:指定将输入分离器 * -f:指定程序的源文件 * --help:显示帮助信息 * --version:显示版本信息 * **示例**: ```bash # ``` ## 参考网址 * [Linux命令查询网站](http://www.lx138.com/) * [Linux命令大全](http://man.linuxde.net/) * [baidu](http://baidu.com/) * [Google](http://google.com.hk)