ORACLE中SED替换用法案例详解.docxVIP

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ORACLE中SED替换用法案例详解

sed替换用法替换!让我们看一下sed最有用的命令之一,替换命令。使用该命令,可以将特定字符串或匹配的规则表达式用另一个字符串替换。下面是该命令最基本用法的示例:CODE:$ sed -e s/foo/bar/ myfile.txt上面的命令将 myfile.txt 中每行第一次出现的 foo(如果有的话)用字符串 bar 替换,然后将该文件内容输出到标准输出。请注意,我说的是每行第一次出现,尽管这通常不是您想要的。在进行字符串替换时,通常想执行全局替换。也就是说,要替换每行中的所有出现,如下所示:CODE:$ sed -e s/foo/bar/g myfile.txt在最后一个斜杠之后附加的 g 选项告诉 sed 执行全局替换。关于 s/// 替换命令,还有其它几件要了解的事。首先,它是一个命令,并且只是一个命令,在所有上例中都没有指定地址。这意味着,s/// 还可以与地址一起使用来控制要将命令应用到哪些行,如下所示:CODE:$ sed -e 1,10s/enchantment/entrapment/g myfile2.txt上例将导致用短语 entrapment 替换所有出现的短语 enchantment,但是只在第一到第十行(包括这两行)上这样做。CODE:$ sed -e /^$/,/^END/s/hills/mountains/g myfile3.txt该例将用 mountains 替换 hills。但是,只从空行开始,到以三个字符 END 开始的行结束(包括这两行)的文本块上这样做。关于 s/// 命令的另一个妙处是 / 分隔符有许多替换选项。如果正在执行字符串替换,并且规则表达式或替换字符串中有许多斜杠,则可以通过在 s 之后指定一个不同的字符来更改分隔符。例如,下例将把所有出现的 /usr/local 替换成 /usr:CODE:$ sed -e s:/usr/local:/usr:g mylist.txt 在该例中,使用冒号作为分隔符。如果不指定分隔符,则变成了如下:CODE:$ sed -e s/usr/local/usrg mylist.txt 这样就不能执行了如果需要在规则表达式中指定分隔符字符,可以在它前面加入反斜杠。规则表达式混乱目前为止,我们只执行了简单的字符串替换。虽然这很方便,但是我们还可以匹配规则表达式。例如,以下 sed 命令将匹配从 开始、到 结束、并且在其中包含任意数量字符的短语。下例将删除该短语(用空字符串替换):CODE:$ sed -e s/.*//g myfile.html 这是要从文件除去 HTML 标记的第一个很好的 sed 脚本尝试,但是由于规则表达式的特有规则,它不会很好地工作。原因何在?当 sed 试图在行中匹配规则表达式时,它要在行中查找最长的匹配。在我的前一篇 sed 文章中,这不成问题,因为我们使用的是 d 和 p 命令,这些命令总要删除或打印整行。但是,在使用 s/// 命令时,确实有很大不同,因为规则表达式匹配的整个部分将被目标字符串替换,或者,在本例中,被删除。这意味着,上例将把下行:CODE:bThis/b is what bI/b meant. 变成:meant. 我们要的不是这个,而是:This is what I meant. 幸运的是,有一种简便方法来纠正该问题。我们不输入“ 字符后面跟有一些字符并以 字符结束”的规则表达式,而只需输入一个“ 字符,后面跟有任意数量非 字符,并以 字符结束”的规则表达式。这将与最短、而不是最长的可能性匹配。新命令如下:CODE:$ sed -e s/[^]*//g myfile.html在上例中,[^] 指定“非 ”字符,其后的 * 完成该表达式以表示“零或多个非 字符”。对几个 html 文件测试该命令,将它们管道输出 more,然后仔细查看其结果。更多字符匹配[ ] 规则表达式语法还有一些附加选项。要指定字符范围,只要字符不在第一个或最后一个位置,就可以使用 -,如下所示:QUOTE:[a-x]* 这将匹配零或多个全部为 a、b、c...v、w、x 的字符。另外,可以使用 [] 字符类来匹配空格。以下是可用字符类的相当完整的列表:字符类 描述 [] 字母数字 [a-z A-Z 0-9] [] 字母 [a-z A-Z] [] 空格或制表键 [] 任何控制字符 [] 数字 [0-9] [] 任何可视字符(无空格) [] 小写 [a-z] [] 非控制字符 [] 标点字符 [] 空格 [] 大写 [A-Z] [] 十六进制数字 [0-9 a-f A-F] 尽可能使用字符类是很有利的,因为它们可以更好地适应非英语 locale(包括某些必需的重音字符等等).高级替换功能???? 已经看到如何执行简单甚至

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档