Подтвердить что ты не робот

Sed вставить строку с пробелами в определенную строку

У меня есть строка с пробелами в начале, например "Hello world". Я хочу вставить эту строку в определенную строку в файле. например вставьте "hello world" в следующий файл

hello
world

результат:

hello
    hello world
world

Я использую этот sed script:

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

проблема в том, что я получаю свою новую строку без пробелов:

hello
hello world
world
4b9b3361

Ответ 1

Вы можете избежать символа space, например, чтобы добавить 2 пробела:

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

Или вы можете сделать это в определении вашей переменной text:

text="\ \ hello world"

Ответ 2

$ a="  some string  "
$ echo -e "hello\nworld"
hello
world
$ echo -e "hello\nworld" | sed "/world/ s/.*/${a}.\n&/" 
hello
  some string  .
world

В приведенной выше замене был добавлен ., чтобы продемонстрировать, что конечные белые пятна сохраняются. Вместо этого используйте sed "/world/ s/.*/${a}\n&/".

Ответ 3

Вам понадобится только один \ для ввода нескольких пробелов как это

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