ChatGPT解决这个技术问题 Extra ChatGPT

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

A
Atropo

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"

You only to escape the first space. Sed seem to automatically recognize the rest of the spaces. E.g., a\ text appends the text with 4 spaces at the front.
a
ashawley

You only need one \ to input multiple blanks like this

sed -i "${line} i \    ${text}" $file

d
devnull
$ 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.


d
dashohoxha

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.