sed、awk功能
sed
在一个或多个文件上自动实现编辑操作
简化对多个文件执行相同的编辑处理工作
编写转换程序
awk
将文本文件看做由记录和字段组成的文本数据库
使用变量操作数据库
使用算术和字符串操作符
使用普通的程序设计结构,例如循环和条件
生成格式化报告
定义函数
从脚本中执行Unix命令
处理Unix命令的结果
更加巧妙地处理命令行的参数
更容易地处理多个输入流
sed、awk相似点
他们都是用相似的语法来调用
他们都是面向字符流的、都是从文本文件中-次一行地读取输入,并将输出直接送到标准输出端
他们都是用正则表达式进行模式匹配
他们允许用户在脚本中指定指令
元字符汇总
. 匹配除换行符以外的任意单个字符。在awk中,句点也能匹配换行符
* 匹配任意一个(包括零个)在它前面的字符(包括由正则表达式制定的字符)
[…]
匹配方括号中字符类中的任意一个。如果方括号中第一个字符为脱字符(^),则表示否定匹配,即匹配除了换行符和类中列出的那些字符以外的所有字符。在
awk中,也匹配换行符。连字符(-)用于表示字符的范围。如果类中的第一个字符为右方括号)则表示它是类的成员。所有其他的元字符在被制定为类中的成员
是都会失去它们原来的含义
^ 如果作为正则表达式的第一个字符,则表示匹配行的开始。在awk中匹配字符串的开始,即使字符串包含嵌入的换行符
$ 如果作为正则表达式的最后一个字符,则表示匹配行的结尾。在awk中匹配字符串的开始,即使字符串包含嵌入的换行符
\{n,m\} 匹配它前面某个范围内单个字符出现的次数(包括由正则表达式指定的字符)。\{n\}将匹配n次出现,\{n,\}至少匹配n次出现,而\{n,m\}匹配n和m之间的任意次出现。(只有sed和grep的一些非常旧的版本中不能使用)
\ 转义随后的特殊字符
扩张的元字符(egrep和awk)
+ 匹配前面的正则表达式的一次或多次出现
? 匹配前面的正则表达式的灵刺或一次出现
| 指定可以匹配其前面的或后面的正则表达式
() 对正则表达式分组
{n,m} 匹配它前面某个范围内单个字符出现的次数(包括由正则表达式指定的字符串)。{n}将匹配n次出现,{n,}至少匹配n次出现,而{n,m}匹配n和m之间的任意次出现。(用于POSIX的egrep和POSIX awk而不是传统的egrep或awk)
Wed Jan 30 14:40:27 CST 2013