Как добавить новую строку в файл из Makefile с помощью не-GNU sed - PullRequest
0 голосов
/ 06 декабря 2018

Я пытаюсь написать цель make, которая добавит новую строку в существующий файл.Вот что я написал:

target:
    sed -i '' '1 i\ \
    <line to be added> \
    ' <filename>

Это вызвало ошибку extra characters after \ at the end of i command из-за пробела между двумя обратными слешами в первой строке.Я не могу поместить их все в одну строку, потому что я использую не-GNU sed, или, точнее, ту, что в macOS.

Как правильно это сделать?

1 Ответ

0 голосов
/ 07 декабря 2018

У меня очень, очень уродливый ответ для вас!: -)

Если вы сделаете bash вашей оболочкой в ​​вашем Makefile, вы можете использовать bash-ism для генерации новой строки для sed с $'\n' следующим образом:

sed -e '1i\'$'\n''line to be added' file

Тогда, если вы хотите поместить это в Makefile, вам нужно удвоить знак доллара, чтобы вы получили это уродливое чудовище!

SHELL := /bin/bash

target: 
    sed -e '1i\'$$'\n''line to be added' file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...