文档详情

awkC教程网cppcoursecom.ppt

发布:2017-02-15约字共13页下载文档
文本预览下载声明
awk 第九章 * 本章目标 什么是awk awk简单用法 awk脚本语法 awk执行过程 * awk 介绍 awk 是一种用于处理数据和生成报告的编程语言 awk 可以在命令行中进行一些简单的操作,也可以被写成脚本来处理较大的应用问题 awk 与 grep、sed 结合使用,将使 shell 编程更加容易 Linux 下使用的 awk 是 gawk awk 是什么 awk 逐行扫描输入 ( 可以是文件或管道等 ),按给定的模式查找出匹配的行,然后对这些行执行 awk 命令指定的操作。 awk 如何工作 与 sed 一样,awk 不会修改输入文件的内容。 可以使用重定向将 awk 的输出保存到文件中。 * awk简单用法 * 用法示例 awk [options] sed_script files 选项 -F 指定输入记录字段的分隔符,默认使用环境变量IFS的值 -f 从指定文件读取awk_script -v 为awk设定变量 awk -F: { print $1 } /etc/passwd awk -F: { print $1, $3 } /etc/passwd awk -F: { print $1 | $3 } /etc/passwd awk -F: /root/{ print $1 | $3 } /etc/passwd awk -F: /^root/ /etc/passwd awk_script语法 awk BEGIN {actions} /pattern1/{actions} ...... /patternN/{actions} END {actions} input_file awk 命令的一般形式: 其中 BEGIN {actions} 和 END {actions} 是可选的 注意 BEGIN 和 END都是 大写字母。 * awk_script 可以由一条或多条 awk_cmd 组成,每条 awk_cmd 各占一行。 awk_cmd 中的 /pattern/ 和 {actions} 可以省略,但不能同时省略;/pattern/ 省略时表示对所有的输入行执行指定的 actions;{actions} 省略时表示打印整行。 每个 awk_cmd 由两部分组成:/pattern/{actions} awk 的执行过程 ⑦ 如果输入是文件列表,awk 将按顺序处理列表中的每个文件。 ① 如果存在 BEGIN ,awk 首先执行它指定的 actions ② awk 从输入中读取一行,称为一条输入记录 ③ awk 将读入的记录分割成数个字段,并将第一个字段放入变量 $1 中,第二个放入变量 $2 中,以此类推;$0 表示整条记录; 字段分隔符可以通过选项 -F 指定,否则使用缺省的分隔符。 ④ 把当前输入记录依次与每一个 awk_cmd 中 pattern 比较: 如果相匹配,就执行对应的 actions; 如果不匹配,就跳过对应的 actions,直到完成所有的 awk_cmd ⑤ 当一条输入记录处理完毕后,awk 读取输入的下一行,重复上 面的处理过程,直到所有输入全部处理完毕。 ⑥ awk 处理完所有的输入后,若存在 END,执行相应的 actions * awk 举例 ifconfig | awk /inet addr/{ print $2 } | awk -F: { print $2 } ifconfig | awk /inet addr/{ print $2 } | awk -F: BEGIN { print begin...} { print $2 } END { print end...} * 模式匹配 ① 使用正则表达式:/rexp/,如 /^A/、/A[0-9]*/ awk 中正则表达式中常用到的元字符有: ^ 只匹配行首 ( 可以看成是行首的标志 ) $ 只匹配行尾 ( 可以看成是行尾的标志 ) * 一个单字符后紧跟 *,匹配 0个或多个此字符 [ ] 匹配 [] 内的任意一个字符 ( [^] 反向匹配 ) \ 用来屏蔽一个元字符的特殊含义 . 匹配任意单个字符 str1|str2 匹配 str1 或 str2 + 匹配一个或多个前一字符 ? 匹配零个或一个前一字符 ( ) 字符组 * 模式匹配 ② 使用布尔 ( 比较 ) 表达式,表达式的值为真时执行相应的操作 (actions) 表达式中可以使用变量 ( 如字段变量 $1,$2 等 ) 和 /rexp/ 表达式中的运算符有 关系运算符: = = == != 匹配运算符: ~ !~ x
显示全部
相似文档