gpt4 book ai didi

linux - 仅使用 GNU sed 在第一个匹配项上插入时出现问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:50:14 25 4
gpt4 key购买 nike

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com