社区首页 >问答首页 >为什么SED删除替换模式后的第一个字符

为什么SED删除替换模式后的第一个字符
EN

Stack Overflow用户
提问于 2014-11-06 08:30:53
回答 3查看 33关注 0票数 0

我想知道有什么问题:

b="inst.;inst" ; echo $b | sed -e 's/\.;[^ ]/\n /' inst nst

预期输出

代码语言:javascript
代码运行次数:0
复制
inst
inst

提前感谢你提供的任何线索。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-11-06 08:35:25

你的图案匹配三个字符。句点,分号,和一些非空格字符。然后将所有这三个字符替换为两个字符(换行符和空格)。

因此,您的模式与.;i匹配,并将其替换为\n

你需要捕捉并重新插入那个非空格字符。

在模式中使用\([^ ]\)\n \1作为替代。

票数 4
EN

Stack Overflow用户

发布于 2014-11-06 08:34:02

您正在替换inst的第一个字符,取而代之的是捕获和保存它,即

代码语言:javascript
代码运行次数:0
复制
sed -e 's/\.;\([^ ]\)/\n \1/'
票数 2
EN

Stack Overflow用户

发布于 2014-11-06 08:35:51

或者,只需将命令更改为b="inst .;inst“;将$b / sed -e的/;/\n/‘替换为换行符。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26784499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档