首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过SED更改单词的第一部分?

如何通过SED更改单词的第一部分?
EN

Stack Overflow用户
提问于 2017-02-08 19:17:46
回答 1查看 41关注 0票数 1

我只是想知道为什么不起作用:

原创

代码语言:javascript
复制
red wagon logon
Blue wagon logon
Black wagon logon
red wagon logon
red wagon logon
red walking 43 logon
red wagon logon 89
Pink wagon logon 110
red wagon logon
red wagon logon
green wagon logon

此命令运行良好:sed 's:wa\(gon\):poly\1:' wagon.txt

结果

代码语言:javascript
复制
red polygon logon
Blue polygon logon
Black polygon logon
red polygon logon
red polygon logon
red walking 43 logon
red polygon logon 89
Pink polygon logon 110
red polygon logon
red polygon logon
green polygon logon

现在我想举个例子,wapoly,但它是打印的,polywa,为什么?

命令:sed 's:\(wa\)gon:poly\1:' wagon.txt

代码语言:javascript
复制
red polywa logon
Blue polywa logon
Black polywa logon
red polywa logon
red polywa logon
red walking 43 logon
red polywa logon 89
Pink polywa logon 110
red polywa logon
red polywa logon
green polywa logon

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-08 19:27:04

将捕获组从gon更改为wa,并将替换部分构造为包含wa\1,并附加poly

代码语言:javascript
复制
sed 's:\(wa\)gon:\1poly:' file
red wapoly logon
Blue wapoly logon
Black wapoly logon
red wapoly logon
red wapoly logon
red walking 43 logon
red wapoly logon 89
Pink wapoly logon 110
red wapoly logon
red wapoly logon
green wapoly logon

\1\2是替换部分中形成regex的捕获组,例如,在行s:\(wa\)gon:\1poly:中,在\1中捕获部件wa,以后可以作为输出wapoly\1poly在替换部分中使用。

为了用同样的例子来演示\2的用法,s:\(wa\)g\(on\):\1poly\2:,现在被捕获的组1,表示为\1 has wa,捕获的组2 \2on,现在构造的string \1poly\2将是wapolyon

代码语言:javascript
复制
sed 's:\(wa\)g\(on\):\1poly\2:' file
red wapolyon logon
Blue wapolyon logon
Black wapolyon logon
red wapolyon logon
red wapolyon logon
red walking 43 logon
red wapolyon logon 89
Pink wapolyon logon 110
red wapolyon logon
red wapolyon logon
green wapolyon logon
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42121787

复制
相关文章

相似问题

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