sed替换字符串的贪婪匹配和最小匹配
最近在shell对文本进行操作,遇到了使用sed进行最小匹配的问题。sed默认匹配规则是贪婪匹配。
举例来说,如果文本内容为:
(aa)bb(cc)
使用sed匹配:
'/(.*)/'
匹配结果为:
(aa)bb(cc)
上述结果即贪婪匹配。
最小匹配的结果是获取规则字符串之间的最小内容,即为:
(aa) (cc)
这两个结果。
sed获取最小匹配的方法:
1.通过 [^str] 的方法找到最近的右侧匹配规则
2.使用perl代替sed。
举例:删除下列字符串中的括号和括号中的内容
(a)bb(ccc)dddd(eeeee)f
使用sed的默认方法(贪婪匹配):
#echo "(a)bb(ccc)dddd(eeeee)f" | sed 's/(.*)//g'
#f
使用第一种方法:
#echo '(a)bb(ccc)dddd(eeeee)f' | sed 's/([^)]*)//g'
#bbddddf
使用第二种方法:
#echo "(a)bb(ccc)dddd(eeeee)f" | perl -pe 's/\(.*?\)//g'
#bbddddf
另外发现,sed支持的匹配规则与perl不同,关于字符是否需要转义也是不一样的。例如,举例中的 "(" 和 ")" 在sed中不需要转义,在perl中则需要转义。
sed替换字符串的贪婪匹配和最小匹配相关推荐
- python正则匹配找到所有的浮点数_Python随笔17:Python正则表达式基础(4):贪婪匹配和最小匹配...
Python正则表达式 贪婪匹配/最小匹配 Re库默认采用贪婪匹配,即匹配最长的子字符串.在量词后面加一个"?",即可由贪婪匹配化为最小匹配. '*'用于将前面的模式匹配0次或多次 ...
- Python RE库的贪婪匹配和最小匹配
>>> import re >>> match = re.search(r'PY.*N', 'PYANBNCNDN') >>> match.gro ...
- linux shell 替换字符串的几种方法,变量替换${},sed,awk
变量a是一个带空格的字符串,现在用"hdpusr400"替换变量a中的"hduser302": [liusiyi@localhost ~]$ echo $a - ...
- shell 替换字符串的几种方法,变量替换${},sed,awk
变量a是一个带空格的字符串,现在用"hdpusr400"替换变量a中的"hduser302": 1 [liusiyi@localhost ~]$ echo $a ...
- Linux中的sed命令,使用方法之一「替换字符串中的内容 」,以及「s/ / / 」和「s/ / /g」之间的区别
■前言 按照如下写法,可以实现替换字符串的功能 ■具体操作 sed 's/hello/hi/' 321.html 替换对象 hello 替换后,显示的内容 hi 只是在输出的时候,被替换,不会改变原有 ...
- 转义sed替换模式的字符串
本文翻译自:Escape a string for a sed replace pattern In my bash script I have an external (received from ...
- vim替换字符串带斜杠_Vim:正则表达式匹配一个字符串
到目前为止,所有给出的答案对我来说都是错误的,因为它们执行的是贪婪匹配.在多次出现"否"的行中,它们将匹配最后一个: YES YES YES YES no YES YES no Y ...
- linux替换变量字符串,linux shell 替换字符串的几种方法,变量替换${},sed,awk
变量a是一个带空格的字符串,现在用"hdpusr400"替换变量a中的"hduser302": [liusiyi@localhost ~]$ echo $a - ...
- Sed 删除匹配行,匹配的字符用Shell变量替换,且变量里含有斜杠“/”时,无法删除 解决办法
原文链接: https://zhidao.baidu.com/question/2138070399877009148.html 修改语法,用#代替",这个只能用在sed的s替换命令中,如: ...
- linux sed 替换中文,Linux中使用sed命令替换字符串小结
最近写了几个小脚本用到了sed命令,学了一下,顺便记下 sed替换的基本语法为: 复制代码 代码如下: sed 's/原字符串/替换字符串/' 单引号里面,s表示替换,三根斜线中间是替换的样式,特殊字 ...
最新文章
- 网友脑洞大开 用 Emoji 开发“俏皮”编程语言
- Varnish3.0中文入门教程-应用篇2
- idea不区分大小写设置_我的 IntelliJ IDEA 一直都是这么设置的,效果很棒!
- 使用 MDT2008 轻量部署进行 Windows XP SP2 简单部署
- JavaScript 本地验证用户注册信息
- SAP Fiori Launchpad Contact Support的按钮启用逻辑
- 线性表之顺序表与单链表的区别及优缺点
- RDL(C) Report Design Step by Step 1: DrillThrough Report
- js面向对象的程序设计 --- 下篇 继承启蒙
- 怎样使用Javascript操作XMLDOM才能兼容IE、FireFox浏览器呢?
- android 自定义加载圈,Android自定义加载控件实现数据加载动画
- win7计算机里没有网络图标,Win7网络图标不见了?找回网络图标的方法
- win10 开始屏幕 磁铁程序图标不显示 解决
- 计算机考试excel基础试题,计算机基础(Excel2010)试题及答案解析
- 基于SSH的医药管理系统
- oracle多次发运,EBS 发运管理操作实例11——延迟交货(Backorder)
- HTTP和RPC的区别
- 超声延时聚焦原理及算法仿真
- 基金从业考试如何备考?
- 关于在Linux下无法查看caj文档的解决方案