I'm trying to insert text to the third line in a file using sed, and the syntax I've found on other forums is:
sed -i '' "3i\ text to insert" file
When I use this however, I get an error:
sed: 1: "3i\ text to insert": extra characters after \ at the end of i command
I can't seem to figure out what is causing the problem. I'm using OSX, which is why I have an empty ' ' as my extension.
Thanks!
If you want to modify a file of specific file type(.sh in my case) use this command.
Make sure you have line break after slash ("\")
You should put a newline directly after the
\
:This is actually the behaviour defined by the POSIX specification. The fact that GNU sed allows you to specify the text to be inserted on the same line is an extension.
If for some reason you need to use double quotes around the sed command, then you must escape the backslash at the end of the first line:
This is because a double-quoted string is processed first by the shell, and
\
followed by a newline is removed:Here's how to do it in one line syntax
duplicate second line:
2s/^//p;
replace new line with your text:
2s/^.*/text to insert/
On OSX you can use:
This works for me