sed工具执行原理的文章;sed参数和动作的常用操作方法;寻址;模式空间和保持空间;它被称为流编辑器,在shell脚本和Makefiles中非常常用作过滤器,即将前面程序的输出引入到sed的输入中,通过一系列的编辑转换成另一种格式输出命令。我们用一张示意图来理解它的工作模式:编辑命令的格式为sed/pattern/action经过sed处理后,文件内容并没有改变,除非使用重定向来存储输出。sed主要用于自动编辑一个或多个文件;简化对文件的重复操作;根据Basic规范,sed默认为基本匹配!也就是说,像(){}|这样的特殊字符需要转义,否则无法识别,或者使用扩展模式也是可以的。2、下面将着重介绍sed的参数及action(1)-n参数、p命令的action(2)d命令的action(3)/pattern/s/pattern1/pattern2/的操作方法:findtheonethatmatchesthepatternLine,replacethefirststringmatchingpattern1inthislinewithpattern2/pattern/s/pattern1/pattern2/g:Findalinethatmatchespattern,replaceallstringsmatchingpattern1inthislinewithpattern2这个操作是未知有没有想到vim编辑器中的底线模式搜索,它们是相似的。下面总结一下sed中参数的选择和执行:[plain]viewplaincopy参数选择:-n:一般sed命令会将所有数据输出到屏幕上。如果加上-n选项,则只会将sed命令处理过的行输出到屏幕。-e:允许对输入数据应用多个sed命令编辑。-i:将修改结果直接写到读取数据的文件中,而不是输出到屏幕上。(1.文件已被修改;2.可以cat查看)-f:指定sed脚本的文件名。action:a:Append,在当前行之后添加一行或多行。c:行替换,用c之后的字符串替换原来的数据行。i:插入,在当前行之前插入一行或多行。p:print,输出指定行。s:字符串替换,用一个字符串替换另一个字符串。格式为“行范围s/旧字符串/新字符串/g”(如果不加g,表示只替换每行第一个匹配的字符串)。如果你上面没有实践过,有兴趣的可以试试!3、介绍一下sed中的寻址。寻址用于决定要编辑文件中的哪些行。地址的形式可以是数字或正则表达式,或两者的组合。如果没有指定地址,sed将处理输入文件的所有行。以下是一些示例:sed'/start/,/end/d'file#删除包含“start”的行和“end”行之间的行sed'/start/,10d'file#删除包含“start”的行'至第十行内容4.模式空间和持有空间(1)持有空间:用于存储数据,相当于一个仓库,不能处理数据;(2)模式空间:专门以行为为单位处理数据。一般来说,如果某些选项没有明确使用,则不会使用保留空间。[plain]viewplaincopy
