Linux每日一命令 - awk.pdfVIP

  • 18
  • 0
  • 约1.94万字
  • 约 6页
  • 2017-09-05 发布于浙江
  • 举报
Linux每日一命令 - awk

Linux每⽇⼀命令 - awk [![linux命令⼤全](/attachments/image/20 1704 11/ 149 1895545 132877 .gif linux命令⼤全 ] (http://j slite .oschina.io/linux-command/ [Github Web版](https://j aywcjlove .github .io/linux- command/ | [开源中国Web版](http://j slite .oschina.io/linux-command | [Alfred 版本下载] (https://github .com/j aywcjlove/linux-command/releases | [Android版本实现] (https://github .com/Ernest-su/LinuxCmd .git ⽂本和数据进⾏处理的编程语⾔ ## 补充说 明 **awk** ⼀种编程语⾔,⽤于在linux/unix下对⽂本和数据进⾏处理。数据可以来 ⾃标准输⼊(stdin 、⼀个或多个⽂件,或其它命令的输出。它⽀持⽤户⾃定义函数和 动态正则表达式等先进功能, linux/unix下的⼀个强⼤编程⼯具。它在命令⾏中使 ⽤,但更多 作为脚本来使⽤。awk有很多内建的功能,⽐如数组、函数等,这 它 和C语⾔的相同之处,灵活性 awk最⼤的优势。 ## awk命令格式和选项 **语法形式 ** ``` awk [options] script var=value file(s awk [options] -f scriptfile var=value file(s ``` **常⽤命令选项** * **-F fs ** fs指定输⼊分隔符,fs可以 字符串或正则表达式, 如-F: * **-v var=value ** 赋值⼀个⽤户定义变量,将外部变量传递给awk * **-f scripfile ** 从脚本⽂件中读取awk命令 * **-m[fr] val ** 对val值设置内在限制,-mf选 项限制分配给val的最⼤块数⽬;-mr选项限制记录的最⼤数⽬。这两个功能 Bell实验 室版awk 的扩展功能,在标准awk 中不适⽤。 ## awk模式和操作 awk脚本 由模式和 操作组成的。 ### 模式 模式可以 以下任意⼀个: * /正则表达式/ :使⽤通配符的扩 展集。 * 关系表达式:使⽤运算符进⾏操作,可以 字符串或数字的⽐较测试。 * 模 式匹配表达式:⽤运算符`~` (匹配)和`~ !` (不匹配)。 * BEGIN语句块、pattern语 句块、END语句块:参见awk 的⼯作原理 ### 操作 操作由⼀个或多个命令、函数、表 达式组成,之间由换⾏符或分号隔开,并位于⼤括号内,主要部分 : * 变量或数组 赋值 * 输出命令 * 内置函数 * 控制流语句 ## awk脚本基本结构 ``` awk BEGIN{ print start } pattern{ commands } END{ print end } file ``` ⼀个awk脚本通常由:BEGIN语 句块、能够使⽤模式匹配的通⽤语句块、END语句块3部分组成,这三个部分 可选 的。任意⼀个部分都可以不出现在脚本中,脚本通常 被 **单引号** 或 **双引号** 中,例如: ``` awk BEGIN{ i=0 } { i++ } END{ print i } filename awk BEGIN{ i=0 } { i++ } END{ print i } filename ``` ### awk 的⼯作原理 ``` awk BEGIN{ commands } pattern{ commands } END{ commands } ``` * 第⼀步:执⾏`BEGIN{ commands }`语句 块中的语句; * 第⼆步:从⽂件或标准输⼊(stdin 读取⼀⾏,然后执⾏`pattern{ commands }`语句块,它逐⾏扫描⽂件,从第⼀⾏到最后⼀⾏重复这个过程,直到⽂ 件全部被读取完毕。 * 第三步:当读⾄输⼊流末尾时,执⾏`END{ commands }`语句 块。 **BEGIN语句块** 在awk开始从输⼊流中读取⾏ **之前** 被执⾏,这 ⼀个可 选的语句块,⽐如变量初始化、打印输出表格的表头等语句通常可以写在BEGIN语句 块中。 **END语句块** 在awk从输⼊流中读取完

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档