我明白sed
会
- 应用第 1 行的所有指令,然后是第 2 行...
- 先前的指令可能会更改模式空间,因此下一条指令将在修改后的模式空间(而不是原始文本)上运行
例子是:
示例.txt 文件
pig cow
命令
sed -e 's/pig/cow/; s/cow/horse/;' sample.txt
预期产出
horse horse
实际输出
horse cow
我预期输出的原因是:
- 第一条指令在模式空间中将猪替换为牛
- 第二条指令在模式空间中用 2匹马替换了 2只猪
我明白sed
会
例子是:
示例.txt 文件
pig cow
命令
sed -e 's/pig/cow/; s/cow/horse/;' sample.txt
预期产出
horse horse
实际输出
horse cow
我预期输出的原因是:
替换命令
s
默认只会替换第一个匹配项,除非在替换结束定界符之后使用了一些标志,如该
g
标志指示sed
对正则表达式的任何非重叠匹配项尽可能多次重复替换。该命令的另一组标志
s
(尽管此处不适用,但了解可能会有用)是单个数字标志,您可以选择用它来替换模式的第 n 个匹配项,如以上将在每一行输入中将第三个更改
a
为一个。A
sed
有关详细信息,请参阅系统(man sed
)的手册。