sed总结笔记

0

Posted by conan | Posted in 总结 | Posted on 23-06-2009

前言:其实是寒假在家看的,一直总结到现在才发上来。这些就是我看到的sed的精华部分了。

替换:
命令格式:地址范围s/匹配模式/替换字符/选项
/为分界符,可以用别的字符。s后的第一个字符会被识别为分隔符,要求不能是空格或制表符,且能将三段内容分开。
地址范围:数字或模式,如 1 1,4 /A/ /A/,/E/
匹配模式:可用基本元字符,另外可以用( )
替换字符:可写正常文字,也可有特殊字符:
&:代表匹配模式中正则表达式配的字符串。例:s/ab/&cd/
\n:与模式中第n(数字)个\( \)制定的字符串匹配。有点类似子式
\:转义替换特殊字符,如&,\,替换命令的分界符
选项:n:指定第n次出现时替换。(1~512)
g:所有目标均替换。
p:输出模式空间的内容。
w:写模式空间的内容。

删除: 地址范围d 整行删除
附加: 定位地址a\
文本
在定位到的行下面加一行,内容为命令中的文本
插入: 定位地址i\
文本
在定位到的行上面加一行,内容为命令中的文本
变换: 定位地址c\
文本
把定位到的行整行替换掉
*插入和附加不可与地址范围同用,交换可以

sed控制步骤:
1.预处理步骤。将下一行读入模式空间。
2.处理步骤。在模式空间中直接处理所有命令。
3.后处理步骤。输出模式空间并返回第一步骤。
*.删除命令出现后立刻停止处理步骤,并且跳过后处理步骤。
**.插入,附加,变换均为后处理步骤操作。变换先删除模式空间,然后返回后处理模式。

列表: l 前面也可加地址范围,一般用法是用-n参数禁止缺省输出再用 它来处理想要输出的部分。另外它会将不可打印字符输出。
输出: p 同列表命令相似,区别大概是不输出不可打印字符。
= 输出行号,不过在对应行的上一行(?)
转换: 行地址y/abc/ABC/ 将每一个a变为A,b变为B…对应位替换。
下一命令: 行地址n 向模式空间读入下一行,直接转入后处理步骤。
读入文件: 行地址r 文件
写文件: 行地址w 文件

多行下一行: N 将输入文件的下一行附加到模式空间的当前行之后,两端内容
间用换行符\n分开,可配合s将换行替换为空格。
多行删除: D 删除内容只第一个换行符(然后直接转到后处理步骤)
多行打印: P 输出模式空间至第一个换行符

驻留空间:除模式空间外的另一块临时空间。
驻留: 行地址h 将匹配的行覆盖驻留空间内的内容
H 附加到驻留空间,并加入换行符
获取: 行地址g 用驻留空间内容覆盖模式空间的内容
G 将驻留空间的内容附加到模式空间后面,并用换行符分隔
交换: 行地址x 交换驻留空间与模式空间的内容

附:ibm的sed教程(比我的详细很多)
http://www.ibm.com/developerworks/cn/linux/shell/sed/sed-2/index.html