sed insert line with spaces to a specific line
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 file
hello
world
result:
hello
hello world
world
I am using this sed script:
sed -i "${line} i ${text}" $file
the problem is that i am getting my new line with out the spaces:
hello
hello world
world
Solution 1:
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"
Solution 2:
You only need one \
to input multiple blanks
like this
sed -i "${line} i \ ${text}" $file
Solution 3:
$ 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.