oracle中sed替换用法案例详解

oracle中sed替换用法案例详解

ID:12476832

大小:23.15 KB

页数:6页

时间:2018-07-17

oracle中sed替换用法案例详解_第1页
oracle中sed替换用法案例详解_第2页
oracle中sed替换用法案例详解_第3页
oracle中sed替换用法案例详解_第4页
oracle中sed替换用法案例详解_第5页
资源描述:

《oracle中sed替换用法案例详解》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、sed替换用法替换!让我们看一下sed最有用的命令之一,替换命令。使用该命令,可以将特定字符串或匹配的规则表达式用另一个字符串替换。下面是该命令最基本用法的示例:CODE:$sed-e's/foo/bar/'myfile.txt上面的命令将myfile.txt中每行第一次出现的'foo'(如果有的话)用字符串'bar'替换,然后将该文件内容输出到标准输出。请注意,我说的是每行第一次出现,尽管这通常不是您想要的。在进行字符串替换时,通常想执行全局替换。也就是说,要替换每行中的所有出现,如下所示:CODE:$sed-e's/foo/bar/g'myfile.txt在最后一个斜杠之后附加的'

2、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该例将用'moun

3、tains'替换'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这样就不能

4、执行了如果需要在规则表达式中指定分隔符字符,可以在它前面加入反斜杠。规则表达式混乱目前为止,我们只执行了简单的字符串替换。虽然这很方便,但是我们还可以匹配规则表达式。例如,以下sed命令将匹配从'<'开始、到'>'结束、并且在其中包含任意数量字符的短语。下例将删除该短语(用空字符串替换):CODE:$sed-e's/<.*>//g'myfile.html这是要从文件除去HTML标记的第一个很好的sed脚本尝试,但是由于规则表达式的特有规则,它不会很好地工作。原因何在?当sed试图在行中匹配规则表达式时,它要在行中查找最长的匹配。在我的前一篇sed文章中,这不成问题,因为我们使用的是'd

5、'和'p'命令,这些命令总要删除或打印整行。但是,在使用's///'命令时,确实有很大不同,因为规则表达式匹配的整个部分将被目标字符串替换,或者,在本例中,被删除。这意味着,上例将把下行:CODE:ThisiswhatImeant.变成:meant.我们要的不是这个,而是:ThisiswhatImeant.幸运的是,有一种简便方法来纠正该问题。我们不输入“'<'字符后面跟有一些字符并以'>'字符结束”的规则表达式,而只需输入一个“'<'字符,后面跟有任意数量非'>'字符,并以'>'字符结束”的规则表达式。这将与最短、而不是最长的可能性匹配。新命令如下:COD

6、E:$sed-e's/<[^>]*>//g'myfile.html在上例中,'[^>]'指定“非'>'”字符,其后的'*'完成该表达式以表示“零或多个非'>'字符”。对几个html文件测试该命令,将它们管道输出"more",然后仔细查看其结果。更多字符匹配'[]'规则表达式语法还有一些附加选项。要指定字符范围,只要字符不在第一个或最后一个位置,就可以使用'-',如下所示:QUOTE:'[a-x]*'这将匹配零或多个全部为'a'、'b'、'c'...'v'、'w'、'x'的字符。另外,可以使用'[]'字符类来匹配空格。以下是可用字符类的相当完整的列表:字符类描述[]字母数字[a-zA-Z

7、0-9][]字母[a-zA-Z][]空格或制表键[]任何控制字符[]数字[0-9][]任何可视字符(无空格)[]小写[a-z][]非控制字符[]标点字符[]空格[]大写[A-Z][]十六进制数字[0-9a-fA-F]尽可能使用字符类是很有利的,因为它们可以更好地适应非英语locale(包括某些必需的重音字符等等).高级替换功能    已经看到如何执行简单甚至有些复杂的直接替换,但是sed还可以做更多的事。实际上可以引用匹配规则表达式的部分或全部

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。