我正在尝试编写一个make目标,它将向现有文件添加新行。这是我写的:
target:
sed -i '' '1 i\ \
<line to be added> \
' <filename>
由于第一行上两个反斜杠之间存在空格,因此引发了错误extra characters after \ at the end of i command
。因为我使用的是非GNU sed,或者更具体地说是在macOS上,所以我不能将它们全部放在一行。
正确的做法是什么?
答案 0 :(得分:0)
我为您提供了一个非常丑陋的答案! :-)
如果在Makefile中将bash
用作shell,则可以使用bash-ism
为sed
的{{1}}生成换行符,如下所示:
$'\n'
然后,如果要将其放入Makefile中,则需要将美元符号加倍,以便获得此丑陋的怪物!
sed -e '1i\'$'\n''line to be added' file