首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sed不像预期的那样工作

Sed不像预期的那样工作
EN

Unix & Linux用户
提问于 2018-10-10 06:18:44
回答 1查看 207关注 0票数 0

我知道sed

  1. 将所有指令应用于第1行,然后第2行.
  2. 以前的指令可能会更改模式空间,因此下一条指令将在修改后的模式空间(而不是原始文本)上操作。

例子是:

sample.txt文件

pig cow

命令

sed -e 's/pig/cow/; s/cow/horse/;' sample.txt

预期输出

horse horse

实输出

horse cow

我预期输出的原因是:

  1. 模式空间中的第一指令用牛代替猪
  2. 模式空间中的第二指令用2 _pig_s代替2 _horse_s
EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2018-10-10 06:34:03

默认情况下,替换命令s将只替换第一个匹配项,除非在替换结束分隔符之后使用某些标志,如

代码语言:javascript
复制
sed -e 's/pig/cow/g; s/cow/horse/g' <sample.txt

g标志告诉sed为正则表达式的任何不重叠匹配重复尽可能多次的替换。

s命令的另一组标志(虽然在这里不适用,但了解一下可能有用)是个位数标志,您可以选择用这些标志替换模式的第n次匹配,如下所示

代码语言:javascript
复制
sed -e 's/a/A/3'

上面的内容将在每一行输入上将第三个a更改为一个A

有关进一步信息,请参阅系统上的sed手册(man sed)。

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

https://unix.stackexchange.com/questions/474407

复制
相关文章

相似问题

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