4 on my linux machine (I checked w/ sed --version
).
Currently, I have a myfile.txt
with the following content:
---
title: hello
author: Jan King
foo: bar
author: Jan King
---
I know in GNU sed, I can append after the first occurrence of a match if I prepend the sed command with 0,
.
So, if I want to insert goodbye
after the first occurrence of ---
, I can do that:
sed -i '0,/---/a goodbye' myfile.txt
expected/correct result:
---
goodbye
title: hello
author: Jan King
foo: bar
author: Jan King
---
But now, I am trying to insert goodbye
after the first occurrence of author: Jan King
.
However, the following sed
command doesn't work and appends goodbye
3 times, which is not what I want:
sed -i '0,/^author:.*/a goodbye' myfile.txt
incorrect/unexpected result:
---
goodbye
title: hello
goodbye
author: Jan King
goodbye
foo: bar
author: Jan King
---
If I remove 0,
from the above sed command, then goodbye
is appended twice after author: Jan King
:
sed -i '/^author:.*/a goodbye' myfile.txt
expected result:
---
title: hello
author: Jan King
goodbye
foo: bar
author: Jan King
goodbye
---
So I'm having trouble appending goodbye
on first match only of author: Jan King
(even though it is fine on first match of ---
).
Can someone please explain why my sed
command isn't working? And how to fix it?