我正在尝试制作一个autoconf脚本以在Makefile中的变量后附加文本(例如$(CFLAGS)-> $(CFLAGS)-Inside)。 sed无效,因为我的字符串可能包含“ /”和其他不受控制的字符。
目标是在每次匹配A之后,在不对其进行任何处理的情况下附加文本B。
我尝试了sed -e "s/\$(CFLAGS)/& {r put.CFLAGS}/g"
,其中put.CFLAGS
包含要附加的内容,但是它直接附加了{r put.CFLAGS}
,而没有读取文件。
我该怎么做?
答案 0 :(得分:0)
晚上给个很好的提示。
我已经通过使用转义序列实现了我想要的。
首先,我用转义序列替换了不安全的字符,在我的情况下,我使用sed 's/\//\\057/g;s/&/\\046/g'
来转换&-> \ 046和/-> \ 057(要得到\ 057和\ 046,请使用for i in $MAKEVAR_LIST; do
SED_ARG="`printf "$RAW" | sed 's/\//\\\\057/g;s/&/\\\\046/g'`"
cat "vache.makoge" | sed -e "s/\$($i)/& $SED_ARG/g" > "veau.makoge"
mv -f "veau.makoge" "vache.makoge"
done
)。
然后printf将转义的char还原为原始含义。
RAW
位置:
MAKEVAR_LIST
包含不安全的东西RAW
var列表,其中附加了vache.makoge
DynamoTwo
最终的Makefile 这很脏,但是对我有用。