sed ゞ 浴缸里的玫瑰 2022-08-06 15:29 145阅读 0赞 目录 简介 1 调用方式 2 选项 2 命令集合 2 寻址 3 基本用法 4 文件读入写出 5 附加-插入-修改文本 5 删除文本 6 替换文本 6 转换文本 8 补充 8 #### 简介 #### <table style="color:rgb(0,0,0); font-family:Arial; font-size:14px; line-height:26px; text-align:left"> <tbody> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 简介<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /></p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 一个“非交互式的”字符流编辑器(stream editor)</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> Sed是一非交互性文本编辑器,它编辑文件或标准输入导出的文本拷贝,标准输入可能来自键盘、文件、重定向、字符串、变量或一管道文件</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> </p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> sed主要用来自动编辑一个或多个文件(替换、插入、删除、追加、更改……);简化对文件的反复操作;编写转换程序等</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> </p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 【对进入的数据进行全局的处理,增加,删除,修改某些部分,得出结果】</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 处理过程</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 1.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space)</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 2.接着用sed命令处理缓冲区中的内容,</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 3.处理完成后,把缓冲区的内容送往屏幕。</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 4.接着处理下一行或多行,这样不断重复,直到文件末尾</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> </p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 文件内容并没有改变,除非你使用重定向或写入命令存储输出</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 主要作用:</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 1. 抽取域</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 2. 匹配正则表达式</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 3. 比较域</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 4. 增加、附加、替换</p> </td> </tr> </tbody> </table> #### 调用方式 #### <table style="color:rgb(0,0,0); font-family:Arial; font-size:14px; line-height:26px; text-align:left"> <tbody> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 调用方式:</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 1. 命令行输入</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> sed [options] 'command' file(s)</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 2. 使用sed脚本</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> sed [options] -f scriptfile file(s)</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 3. 使sed脚本可执行</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 在脚本第一行具有sed命令解释器</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> Sed脚本文件 [选项]输入文件</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> sed–f sedScriptFile targetFile</p> </td> </tr> </tbody> </table> #### 选项 #### <table style="color:rgb(0,0,0); font-family:Arial; font-size:14px; line-height:26px; text-align:left"> <tbody> <tr> <td colspan="2"> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 选项:</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> -n</p> </td> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> --quiet, --silent 取消默认输出</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 不打印,不写编辑行到标准输出,<span style="color:red">缺省情况下打印所有行</span><span style="color:red">[</span>编辑/未编</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 辑]p命令可以打印编辑行</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> -f</p> </td> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 调用sed脚本sed –f sedScriptFile targetFile</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> -c</p> </td> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 下一命令是编辑命令,使用多项编辑时加入此选项</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> -e command</p> </td> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> --expression=command 允许多条编辑命令</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> -h</p> </td> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> --help打印帮助,并显示bug列表的地址</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> -V</p> </td> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> --version 打印版本和版权信息</p> </td> </tr> </tbody> </table> #### 命令集合 #### <table style="color:rgb(0,0,0); font-family:Arial; font-size:14px; line-height:26px; text-align:left"> <tbody> <tr> <td colspan="2"> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 命令集合:</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> a\</p> </td> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 定位行号后附加新文本信息 append</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> b lable</p> </td> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 分支到脚本中带有标记的地方,如果分支不存在则分支到脚本的末尾</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> c\</p> </td> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 用新的文本改变本行的文本,用新文本替换定位文本 change</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> d</p> </td> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 从模板块(Pattern space)位置删除行 删除定位行 delete</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> D</p> </td> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 删除模板块的第一行</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> i\</p> </td> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 定位行号后插入 insert</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> h</p> </td> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 拷贝模板块的内容到内存中的缓冲区</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> H</p> </td> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 追加模板块的内容到内存中的缓冲区</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> g</p> </td> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 获得内存缓冲区的内容,并替代当前模板块中的文本</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> G </p> </td> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 获得内存缓冲区的内容,并追加到当前模板块文本的后面</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> l</p> </td> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 列表不能打印字符的清单 将非打印字符显示为两个数字的ASCII代码</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> n</p> </td> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 读取下一个输入行,用下一个命令处理新的行而不是用第一个命令</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> N </p> </td> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 追加下一个输入行到模板块后面并在二者间嵌入一个新行,改变当前行号码</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> p </p> </td> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 打印匹配行 print</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> P(大写)</p> </td> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 打印模板块的第一行</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> q </p> </td> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 退出Sed 第一个模式匹配完成后退出或立即退出</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> r file</p> </td> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 从file中读行 从另一个文件中读文本 read</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> t label </p> </td> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> <strong>if</strong>分支,从最后一行开始,条件一旦满足或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> T label</p> </td> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 错误分支,从最后一行开始,一旦发生错误或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> w file</p> </td> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 写并追加模板块到file末尾 写文本到一个文件 write</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> W file</p> </td> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 写并追加模板块的第一行到file末尾</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> y</p> </td> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 传送字符</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> !</p> </td> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 表示后面的命令对所有没有被选定的行发生作用</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> s/re/string </p> </td> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 用string替换正则表达式re 使用替换模式替换相应模式</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> =</p> </td> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 打印匹配行行号</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> # </p> </td> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 把注释扩展到下一个换行符以前</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> {}</p> </td> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 定位执行命令组</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 替换标记</p> </td> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 1)g表示行内全面替换。 </p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 2)p表示打印行。 </p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 3)w表示把行写入一个文件。 </p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 4)x表示互换模板块中的文本和缓冲区中的文本。 </p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 5)y表示把一个字符翻译为另外的字符(但是不用于正则表达式)</p> </td> </tr> </tbody> </table> #### 寻址方式 #### <table style="color:rgb(0,0,0); font-family:Arial; font-size:14px; line-height:26px; text-align:left"> <tbody> <tr> <td colspan="2"> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 寻址:</p> </td> </tr> <tr> <td colspan="2"> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> sed命令可以指定零个、一个或两个地址。每个地址都是一个描述模式、行号、或者行寻址</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 符号的正则表达式。</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 如果没有指定地址,那么命令将应用于每一行。</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 如果只有一个地址,那么命令将应用于与这个地址匹配的任意行。</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 如果指定了由逗号分隔的两个地址,那么命令应用于匹配第一个地址的第一行和他后面的</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 行,直到匹配第二个地址的行(包括此行)。</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> </p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 如果地址后面跟有感叹号(!),那么命令就应用于不匹配该地址的所有的行。</p> </td> </tr> <tr> <td colspan="2"> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 定位命令</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> x</p> </td> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 行x</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> X,y</p> </td> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 行x到行y</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> /pattern/</p> </td> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 模式</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> /pattern/pattern/</p> </td> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 两个模式</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> /pattern/,x</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> </p> </td> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 模式+行【在给定行号上查询模式】</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> X,y /pattern/</p> </td> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 通过行号和模式查询匹配行</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> X,y!</p> </td> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 不包含指定行号</p> </td> </tr> </tbody> </table> #### 基本用法 #### <table style="color:rgb(0,0,0); font-family:Arial; font-size:14px; line-height:26px; text-align:left"> <tbody> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 示例:[dream为数据文件]</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 基本用法——匹配&打印</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 1. 显示第二行</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> $sed –n ‘2p’ dream</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 2. 显示一到三行</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> $sed –n ‘1,3p’ dream</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 3. 匹配模式</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> $sed –n ‘/dreamb/’p dream</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 4. 使用模式和行号进行匹配</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> $sed –n ‘4,/The/’p dream</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 【只能加一个行号,不能变为区间】</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 5. 打印匹配行行号</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> $sed –n ‘/dream/=’ dream</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 6. 匹配元字符</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> $sed –n ‘/\$/’p dream</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 7. 显示整个文件</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> $sed –n ‘1,$p’ dream</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 8. 匹配字符串</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> $sed –n ‘/.*ing/’p dream</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 9. 首行</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> $sed –n ‘1p’ dream</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 10.行号打印</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> $sed –e ‘/music/=’ quote.txt 整个文件并打印匹配行号</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> $sed –n ‘/music/=’ quote.txt 只打印匹配行号</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 11. </p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> sed –n “/^title/p” auction.xml#精确匹配以title开头,打印此行</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> sed -n "/pict/,5p" auction.xml #指定具体行匹配</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> sed –n “/\<doc\>/p” auction.xml #匹配正则表达式</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> sed –n “/.*is/p” auction.xml#匹配任意字母</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> sed -n -e "/^title/p" -e "/^title/=" auction.xml #打印行号及匹配行</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> </p> <h4 style="margin:0px; padding:0px"><a rel="nofollow"></a><a style="color:rgb(255,153,0)" rel="nofollow"></a>文件操作</h4> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 文件读入写出</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> </p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 读取文件:r命令</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> $ sed '/test/r file' example</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> file里的内容被读进来,显示在与test匹配的行后面,如果匹配多行,则file的内容将显示在所有匹配行的下面。 </p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> </p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 写入文件:w命令 可以使用重定向</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> $ sed -n '/test/w file' example</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 在example中所有包含test的行都被写入file里</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> </p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 注: 在命令和文件名之间必须有一个空格。每个脚本最多只能打开10个文件</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> </p> <h4 style="margin:0px; padding:0px"><a rel="nofollow"></a><a style="color:rgb(255,153,0)" rel="nofollow"></a>附加-插入-修改文本</h4> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 附加/插入/修改文本</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 使用符号a\,可以将指定文本一行或多行附加到指定行,若不指定放置位置,默认放入第一行。</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 注:附加操作,结果到标准输出,不能被编辑,必须存到另一个文件,再运行一个sed编辑</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 插入文本 i\ 修改文本 c\</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> </p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 1. 匹配行后插入一行</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> $sed ‘/dreamb/a\”appended line”’ dream</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 【会自动换行】</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 2. 插入文本</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> $sed ‘2 i\ “inserted line”’ dream</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 【在第二行之前加一行】</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> sed "/user/ i\test" auction.xml</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 在匹配行前插入test</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 3. 修改文本</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> $sed ‘3 c\ “changed line”’ dream</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 【整行替换掉】</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 【注:可以用行,/正则/搞定】</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> </p> <h4 style="margin:0px; padding:0px"><a rel="nofollow"></a><a style="color:rgb(255,153,0)" rel="nofollow"></a>删除文本</h4> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 删除文本</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 命令格式: [address[,address]] d</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 1. 删除行</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> $sed ‘1d’ dream</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> $sed ‘1,3d’ dream</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> $ sed '2,$d' example #第二行到末尾所有行</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> $ sed '$d' example-----删除example文件的最后一行</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 2. 删除匹配行</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> $sed ‘/dreamb/d’ dream</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> $sed –n ‘/BEGIN/,/END/d’ myfile</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> </p> <h4 style="margin:0px; padding:0px"><a rel="nofollow"></a><a style="color:rgb(255,153,0)" rel="nofollow"></a>替换文本</h4> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 替换文本</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 格式:[address[,address]]s/pattern-find/replacement-pattern/[g,p,w,n]</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> n 1到512之间的一个数字,表示对本模式中指定模式第n次出现的情况进行替换。</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> g 对模式空间所有出现的情况进行全局更改【缺省只替换首次出现的模式 】</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> p 打印模式空间的内容</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> w file</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 1. 替换</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> $sed ‘s/dreamb/DREAMB’ dream</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 【问题:这里是如何执行的?报错】</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 2. 全局替换</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> $sed ‘s/The/Wow!/g’ dream</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 3. 替换后重定向到文本</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> $sed ‘s/dreamb/Dream/w sed.out’ dream</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 【只输出替换行】</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 4. 读取部分写入另一个文件</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> $sed ‘1,2 w filedt’ dream</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> $sed ‘/dream/ w filedt’ dream</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 【注: 在命令和文件名之间必须有一个空格。每个脚本最多只能打开10个文件。】</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 5. 首次匹配后退出</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> $sed ‘/dream/q’ dream</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 【遇到匹配之前的内容还是要输出的】</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 6. 显示文件中的控制字符</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 格式: [ address[,address]]l</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> $sed –n ‘1,$l’ dream 【小写字母l】</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 7. 去除行首数字</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> $sed ‘s/^[0-9]//g’ dream</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 8. Shell向sed传值</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> $NAME=”go there”</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> $REP=”GO”</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> $echo $NAME | sed “s/go/$REP/g” 这里必须双引号【此时sed单引号不被解析】</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 9. 使用替换修改字符串(title前面加test)(注意和附件文本不要混淆)</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> sed -n "s/^title/test &/p" auction.xml</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 10. $ sed 's#10#100#g' example</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 不论什么字符,紧跟着s命令的都被认为是新的分隔符,所以,“#”在这里是分隔符,代替了默认的“/”分隔符。表示把所有10替换成100</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 11. $ sed 's/^192.168.0.1/&localhost/' example</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> &符号表示替换换字符串中被找到的部份。所有以192.168.0.1开头的行都会被替换成它自已加 localhost,变成192.168.0.1localhost</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> </p> <h4 style="margin:0px; padding:0px"><a rel="nofollow"></a><a style="color:rgb(255,153,0)" rel="nofollow"></a>转换文本</h4> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 转换文本</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 语法: [address]y/abc/xyz/</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 功能:字母表式的转换</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> eg1</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> $ cat test.txt</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 1 cow</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 2 cow</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 3 pig</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 4 cow</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> $ sed 'y/cp/wd/' test.txt</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 1 wow</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 2 wow</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 3 dig</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 4 wow</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> (c转换成w,p转换成d)</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> </p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> eg2</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> $ sed '1,10y/abcde/ABCDE/' example</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 把1--10行内所有abcde转变为大写,注意,正则表达式元字符不能使用这个命令</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> </p> <h4 style="margin:0px; padding:0px"><a rel="nofollow"></a><a style="color:rgb(255,153,0)" rel="nofollow"></a>补充</h4> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> sed补充:</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 分组</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> sed 使用大括号“{}”将一个地址嵌套在另一个地址中,或者在相同的地址上应用多个命令。</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> </p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 左大括号必须在行末,而且右大括号本身必须单独占一行。要确保在大括号之后没有空格。</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 可以使用大括号将编辑命令括起来以对某个范围的行应用多个命令。</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> </p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> $cat test.txt</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 1 cow</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 2 cow</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 3 pig</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 4 cow</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> $ cat test.sed</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> /^1/,/^3/{ </p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> s/cow/pig/</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> /^2/d</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> }</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> $ sed -f test.sed test.txt</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 1 pig</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 3 pig</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 4 cow</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> </p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 输出到不同文件:</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> /^1/,/^3/{ </p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> /^1/w 1out.txt</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> /^2/w 2out.txt</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> /^1/,/^3/w allout.txt</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> }</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 下一个</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> <a style="color:rgb(202,0,0)" rel="nofollow">sed '/test/{ n; s/aa/bb/; }' example</a></p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 如果test被匹配,则移动到匹配行的下一行,替换这一行的aa,变为bb,并打印该行,然后继续</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> </p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 退出</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> $ sed '10q' example-----打印完第10行后,退出sed</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 保持和获取</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> $ sed -e '/test/h' -e '$G example</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 在sed处理文件的时候,每一行都被保存在一个叫模式空间的临时缓冲区中,除非行被删除或者输出被取消,否则所有被处理的行都将 打印在屏幕上。接着模式空间被清空,并存入新的一行等待处理。</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 在这个例子里,匹配test的行被找到后,将存入模式空间</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> h命令将其复制并存入一个称为保 持缓存区的特殊缓冲区内。</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 当到达最后一行后,G命令取出保持缓冲区的行,然后把它放回模式空间中,且追加到现在已经存在于模式空间中 的行的末尾</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> </p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 在这个例子中就是追加到最后一行。简单来说,任何包含test的行都被复制并追加到该文件的末尾。</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 保持和互换</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> $ sed -e '/test/h' -e '/check/x' example</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 互换模式空间和保持缓冲区的内容。也就是把包含test与check的行互换</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 同时执行多个命令</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> $ sed -e '1,5d' -e 's/test/check/' example</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> (-e)选项允许在同一行里执行多条命令。如例子所示,第一条命令删除1至5行,第二条命令用check替换test。命令的执 行顺序对结果有影响。如果两个命令都是替换命令,那么第一个替换命令将影响第二个替换命令的结果。 </p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> </p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> $ sed --expression='s/test/check/' --expression='/love/d' example</p> </td> </tr> </tbody> </table> <table style="color:rgb(0,0,0); font-family:Arial; font-size:14px; line-height:26px; text-align:left"> <tbody> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> <strong>简单脚本示例</strong>:</p> </td> </tr> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> vi test.sed</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> s/pig/cow/g</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> [:~$] sed -f test.sed test.txt</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> cow</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> [:~$] cat test.txt</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> pig</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> </p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 简单脚本示例:</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> [:~$] cat test.sh</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> </p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> sed '/^1/,/^3/{ </p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> s/cow/pig/</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> }' test.txt</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> [:~$] ./test.sh </p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 1 pig</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 2 pig</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 3 pig</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 4 cow</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> </p> </td> </tr> </tbody> </table>
相关 sed \[root@localhost ~\]\ cat 3 difsdf fsd dfs \[root@localhost ~\]\ sed 's/fs/aa/' 川长思鸟来/ 2022年10月02日 10:48/ 0 赞/ 128 阅读
相关 sed 替换 转自:http://blog.csdn.net/mypwb/article/details/5832732 让我们看一下 sed 最有用的命令之一,替换命令。使用该 偏执的太偏执、/ 2022年08月25日 01:50/ 0 赞/ 202 阅读
相关 Sed简介 Sed简介 sed是一款轻量级流编辑器,是stream editor的简写。由于sed是以行为单位进行编辑文件 , 因此也称为行编辑器。它无需直接编辑资料,能够将编辑工作自 缺乏、安全感/ 2022年08月10日 09:23/ 0 赞/ 153 阅读
相关 sed 目录 简介 1 调用方式 2 选项 2 命令集合 2 寻址 3 基本用法 4 文件读入写出 5 附加-插入-修改文本 5 删除文本 6 ゞ 浴缸里的玫瑰/ 2022年08月06日 15:29/ 0 赞/ 146 阅读
相关 sed命令 sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern spa 深碍√TFBOYSˉ_/ 2022年06月01日 08:06/ 0 赞/ 247 阅读
相关 sed sed sed与grep比较,sed能实现grep功能,但是比较麻烦,而且没有颜色显示;sed优势在于替换一些指定的字符。 用sed实现grep匹配的功能,匹配关键词用 ╰半橙微兮°/ 2022年05月26日 06:51/ 0 赞/ 131 阅读
相关 sed stream editor 文件或命令行获取一行文本,进行处理输出,不修改原始文本 从命令行读取是输入一行,处理一行,再输入一行(这就是第二行),结束Ctrl+D(发送 r囧r小猫/ 2022年04月24日 13:30/ 0 赞/ 168 阅读
相关 sed命令 sed -i 's\a\b\g' test.txt 将test.txt中a替换为b,s为替换,g为全局替换 转载于:https://www.cnblogs.com/z 港控/mmm°/ 2021年11月22日 20:38/ 0 赞/ 294 阅读
相关 Sed命令 脚本命令如果不经常使用,那么很容易忘记,所以这里记录下,经常使用到的一些脚本命令。忘记的时候,看下笔记也能够快速捡起来 1.Sed命令语法 sed \[options\ 小咪咪/ 2021年11月09日 12:36/ 0 赞/ 492 阅读
相关 sed 命令 sed 是一种在线编辑器,主要用来自动编辑一个或多个文件。 工作原理:sed一次处理一行内容,处理时把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern spa 青旅半醒/ 2021年06月22日 15:37/ 0 赞/ 452 阅读
还没有评论,来说两句吧...