sed默认最长的可能性匹配,如何修改到最短匹配?
来源:互联网 发布:德州冠军软件 编辑:程序博客网 时间:2024/06/11 04:05
目前为止,我们只执行了简单的字符串替换。虽然这很方便,但是我们还可以匹配规则表达式。例如,以下 sed 命令将匹配从 '<' 开始、到 '>' 结束、并且在其中包含任意数量字符的短语。下例将删除该短语(用空字符串替换):
$ sed -e 's/<.*>//g' myfile.html
这是要从文件除去 HTML 标记的第一个很好的 sed 脚本尝试,但是由于规则表达式的特有规则,它不会很好地工作。原因何在?当 sed 试图在行中匹配规则表达式时,它要在行中查找最长的匹配。在我的前一篇 sed 文章中,这不成问题,因为我们使用的是 'd' 和 'p' 命令,这些命令总要删除或打印整行。但是,在使用 's///' 命令时,确实有很大不同,因为规则表达式匹配的整个部分将被目标字符串替换,或者,在本例中,被删除。这意味着,上例将把下行:
<b>This</b> is what <b>I</b> meant.
变成:
meant.
我们要的不是这个,而是:
This is what I meant.
在上例中,'[^>]' 指定“非 '>'”字符,其后的 '*' 完成该表达式以表示“零或多个非 '>' 字符”。对几个 html 文件测试该命令,将它们管道输出到 "more",然后仔细查看其结果。
$ sed -e 's/<.*>//g' myfile.html
这是要从文件除去 HTML 标记的第一个很好的 sed 脚本尝试,但是由于规则表达式的特有规则,它不会很好地工作。原因何在?当 sed 试图在行中匹配规则表达式时,它要在行中查找最长的匹配。在我的前一篇 sed 文章中,这不成问题,因为我们使用的是 'd' 和 'p' 命令,这些命令总要删除或打印整行。但是,在使用 's///' 命令时,确实有很大不同,因为规则表达式匹配的整个部分将被目标字符串替换,或者,在本例中,被删除。这意味着,上例将把下行:
<b>This</b> is what <b>I</b> meant.
变成:
meant.
我们要的不是这个,而是:
This is what I meant.
幸运的是,有一种简便方法来纠正该问题。我们不输入“'<' 字符后面跟有一些字符并以 '>' 字符结束”的规则表达式,而只需输入一个“'<' 字符后面跟有任意数量非 '>' 字符并以 '>' 字符结束”的规则表达式。这将与最短、而不是最长的可能性匹配。
新命令如下:
$ sed -e 's/<[^>]*>//g' myfile.html在上例中,'[^>]' 指定“非 '>'”字符,其后的 '*' 完成该表达式以表示“零或多个非 '>' 字符”。对几个 html 文件测试该命令,将它们管道输出到 "more",然后仔细查看其结果。
- sed默认最长的可能性匹配,如何修改到最短匹配?
- hdu4685 最大匹配可能性
- 如何修改音乐的匹配字数
- 匹配最长的回文串
- Sed 地址和模式匹配的问题
- sed 匹配最短模式的方法
- sed 提取匹配的字符串内容
- grep/sed 匹配变量
- sed 匹配模式问题
- # sed 查找匹配行
- linux sed 匹配替换
- POJ1904 强联通(最大匹配可能性)
- 逆向最长匹配算法的实现
- 路由器IP转发的最长匹配原则
- 中文分词-最长匹配法的实现
- java实现最长匹配括号的长度
- IP路由查找的“最长匹配原则”
- 32.最长的合法括号匹配
- Lua脚本在C++下的舞步(二)
- 在ASP中自动创建多级文件夹的函数(使用FSO)
- 领悟工具的“威力”,磨刀擦擦擦--Windows上也能用strings输出controlfile中文件结构信息
- 通过 http 协议上传文件(rfc1867协议概述) multipart/form-data;boundary 解释
- [转]数据库三范式经典实例解析
- sed默认最长的可能性匹配,如何修改到最短匹配?
- 在java开发中关于class.getResourceAsStream(String name)与 class.getClassLoader().getResourceAsStream(String
- AE10 运行时绑定(解决Could not bind to a valid ArcGIS installation)
- 下个十年PC与服务器的发展变化
- Valgrind---linux上的程序调试和分析工具
- NGN的产生与发展(一)
- jQuery内容过滤选择器选择元素实例讲解
- Could not bind to a valid ArcGIS installation问题的解决
- 常见内部排序方法的比较以及选择