I have a line with spaces in the start for example \" Hello world\". I want to insert this line to a specific line in a file. for example insert \" hello world\" to the next f
You can escape the space
character, for example to add 2 spaces:
sed -i "${line} i \ \ ${text}" $file
Or you can do it in the definition of your text
variable:
text="\ \ hello world"
$ a=" some string "
$ echo -e "hello\nworld"
hello
world
$ echo -e "hello\nworld" | sed "/world/ s/.*/${a}.\n&/"
hello
some string .
world
The .
was added in the substitution above to demonstrate that the trailing whitepsaces are preserved. Use sed "/world/ s/.*/${a}\n&/"
instead.
It can be done by splitting the expression like this:
sed -i $file -e '2i\' -e " $text"
This is a GNU extension for easier scripting.
You only need one \
to input multiple blanks
like this
sed -i "${line} i \ ${text}" $file