4 在我的 linux 机器上(我检查了 w/sed --version
)。
目前,我有一个包含以下内容的 myfile.txt
:
---
title: hello
author: Jan King
foo: bar
author: Jan King
---
我知道在 GNU sed 中,如果我在 sed 命令前加上 0,
,我可以在第一次出现匹配项后追加。
所以,如果我想在第一次出现 ---
之后插入 goodbye
,我可以这样做:
sed -i '0,/---/a goodbye' myfile.txt
预期/正确结果:
---
goodbye
title: hello
author: Jan King
foo: bar
author: Jan King
---
但是现在,我试图在第一次出现 author: Jan King
之后插入 goodbye
。
但是,下面的 sed
命令不起作用并附加 goodbye
3 次,这不是我想要的:
sed -i '0,/^author:.*/a goodbye' myfile.txt
不正确/意外的结果:
---
goodbye
title: hello
goodbye
author: Jan King
goodbye
foo: bar
author: Jan King
---
如果我从上面的 sed 命令中删除 0,
,那么 goodbye
会在 author: Jan King
之后附加两次:
sed -i '/^author:.*/a goodbye' myfile.txt
预期结果:
---
title: hello
author: Jan King
goodbye
foo: bar
author: Jan King
goodbye
---
所以我在 author: Jan King
的第一场比赛中附加 goodbye
时遇到了麻烦(尽管在 的第一场比赛中没问题---
)。
有人可以解释为什么我的 sed
命令不起作用吗?以及如何解决?
最佳答案
您在评论中显示的链接与您尝试使用的命令序列不完全相同。如果您想使用相同的技术,请尝试:
sed -i '0,/^\(author:.*\)/s//\1\nNew Inserted Line/' myfile.txt
关于linux - 仅使用 GNU sed 在第一个匹配项上插入时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57403369/