Possible Duplicate:
Inserting text at the beginning of a file with sed via the terminal in Linux
I need to add a line to the beginning of a file. The line in question is
\def\submit{}
I've got a semi-working solution using sed. I don't know sed, but got it from somewhere on the net, but it doesn't work quite right, because it inserts an unwanted space at the beginning of the line. While this doesn't really matter, I figure I might as well do this right.
sed -i '1i\ \\\def\\\submit{}' 'dirname/filename'
It seems from my reading that all those extra backslashes are required to escape the shell. Other solutions are also welcome, but I'd like a comparably compact one liner if possible. Thanks.
This question, Inserting text at the beginning of a file with sed via the terminal in Linux is similar, but doesn't help me debug my expression.
EDIT: After this question was helpfully closed, I was able to get a working version of this by using an answer to "How can I prepend a tag to the beginning of several files?" I was not previously aware of this question. The solution is
sed -i '1s/^/\\\def\\\submit{}\\n/' 'dirname/filename'
I still don't know why the original version didn't work. I guess I should learn the sed syntax, but really I just want something that works.
I'm posting here, since I cannot post this as an answer to this question. BTW, I think How can I prepend a tag to the beginning of several files? would be a better question to reference than the Inserting text at the beginning of a file with sed via the terminal in Linux which this question was linked to. It has a lot more answers.