sed 和aw k 入门 13Chapter 设计Script 时,有时候需修改脚本,例如:删除或置换某些关键词。像这种在Script 执行过程动态修改文件的做法,称为流编辑。具有流编辑能力的工具,称为流编辑器(stream editer)。sed 是这方面的佼佼者,可补Bash 的不足。另外,Script 执行时可能要制作报表,呈现各字段信息。传统上,能和Bash 完美搭配的,非awk 莫属。 实战Linux Shell编程与服务器管理本章将介绍这两个强大工具的基本用法,熟悉这两者,可让你的Script 如虎添翼,威力大增。 13.1 正则表达式 在介绍sed 和awk 之前,要先具备正则表达式的基本知识。 正则表达式是组成“样式”的基本语法,而“样式”是运用sed 和awk 必备的能力。sed和awk 相同的运行方式是:只要符合“样式”的数据行,就对它执行指定的“操作”。因此,了解样式的基本语法,运用sed 和awk 才能得心应手。 何谓正则表达式 正则表达式是一种描述的方法,一种小型的语言,可表示某种样式或若干种样式的组合,它的威力在于仅需几个简单的符号 ,便 可代 表许 多 字符串 共 同的样子 。这是固 定样式无 法比拟 的,例如,样式Shell,只能比 对固 定的字符串 ,作用不大,但 若改成sh*,却 可比 对 she 、Shell、 short 等 多 种字符串 ,涵 盖 面较 大,因此,发 挥 的作用较 强。 以 下 介绍正则表达式的语法: .一点 代 表一个字符 . 代 表任 意 的字符。 例1:样式 .T. ,代 表3 个字符,中 间 是T,左 右 两边 是任 意 的一个字符。 例2:... 代 表字符长 度 是3 的字符串 。若想 比 对 . 这个字符本身 ,需加 上转 义 字符(\),写 成\.。例如:样式data\....代 表data.后 接 3 个字符,如data.txt 、 data.cfg 、 data.123 等 ,都 符合这个样式,但 data1234 就不符合了,因为4 个点 最 左 边 的那 个点 ,已 经 用\转 义 其 特 殊 意 义 ,还 原 为.这个字符本身 ,因此,\....和1234 比 对不符。 264 2114141414141414^ 在行首 ^ 代表位置在行的开头。 例如:样式 ^Jack ,代表Jack 应出现在行首,才算符合样式。像Jack and Marry 123 就符合此样式,但Hi Jack 就不符合,因为Jack 没有出现在该行的最前面。 $在尾部 sed和aw k入门 13 $ 代表位置在行的最后面。 例如:样式123$,代表在行的最后面是123。像J...