如何使用非GNU sed从Makefile向文件添加新行

时间:2018-12-06 18:59:54

标签: unix sed

我正在尝试编写一个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 :(得分:0)

我为您提供了一个非常丑陋的答案! :-)

如果在Makefile中将bash用作shell,则可以使用bash-ismsed的{​​{1}}生成换行符,如下所示:

$'\n'

然后,如果要将其放入Makefile中,则需要将美元符号加倍,以便获得此丑陋的怪物!

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