ведущие пробелы в строках после команды i обрезаются - PullRequest
0 голосов
/ 25 марта 2020

Я пытаюсь добавить строку в файл с указанием c строки:

sed -i.bak '2i\
  test\
' /tmp/hosts.yaml

Моя проблема заключается в том, что вставленная строка в файле не имеет 2 пробелов. Как я могу сохранить 2 пробела?

Спасибо

Ответы [ 2 ]

0 голосов
/ 25 марта 2020

Если вы хотите отредактировать файл в скрипте, я считаю, что ed работает намного лучше, чем нестандартный sed -i (Не в последнюю очередь, потому что он изначально предназначен для работы с файлами, а не отдельными строками в потоке, который делает более сложные вещи намного проще):

$ cat foo.txt                                  
- line 1
- line 2
- line 3
$ printf "%s\n" 2i "  test" "" . w | ed -s foo.txt
$ cat foo.txt                                     
- line 1
  test

- line 2
- line 3

или в форме heredo c, которую обычно легче читать:

ed -s foo.txt <<EOF
2i
  test

.
w
EOF
0 голосов
/ 25 марта 2020

Я мог воспроизвести это поведение на Omn iOS 'sed (хотя не смог найти объяснения на странице руководства), и там работала обратная косая черта. Например:

sed -i.bak '2i\
\ \ test\
' /tmp/hosts.yaml
...