sed 仅更改文件中的字符串一次

问题描述 投票:0回答:3

建议我有一个文件

example
如下:

c
a
b
a
b
d

我想将第一次出现的

a
更改为
e
。然后我这样做:

sed -i 's/a/e/' example

并且所有

a
都更改为
e

那么有没有办法让 sed 在一个文件中只替换一次呢?

谢谢。

bash sed command-line-interface
3个回答
12
投票

将阿齐兹的重复链接中的信息应用于您的问题,我认为这将为您的案例提供所需的结果:

sed -i '0,/a/s//e/' example

6
投票

将阿齐兹重复链接中的信息应用于您的问题,我 认为这将为您的案例带来所需的结果:

sed -i '0,/a/s//e/' example

拉贝的回答很好。 但是,在地址范围和 's' 命令之间添加一个空格可以使其更加清晰。 像这样:

sed -i '0,/a/ s//e/' example

威尔逊的版本似乎多余。


0
投票

sed -i '0,/needle/ s|needle|replacement|'
文件.txt

第一节与针的出现相匹配。在空格之后,它将开始替换该事件。

我个人认为将针展示两次更具可读性。其他答案中的

//
是 sed 记住第一根针的简写。

请注意,我将分隔符更改为 |。如果替换文本有斜杠,则更改分隔符会更容易。

© www.soinside.com 2019 - 2024. All rights reserved.