如何查找字符串并附加(不安全的)文本?

时间:2018-07-07 20:17:04

标签: sed sh

我正在尝试制作一个autoconf脚本以在Makefile中的变量后附加文本(例如$(CFLAGS)-> $(CFLAGS)-Inside)。 sed无效,因为我的字符串可能包含“ /”和其他不受控制的字符。

目标是在每次匹配A之后,在不对其进行任何处理的情况下附加文本B。

我尝试了sed -e "s/\$(CFLAGS)/& {r put.CFLAGS}/g",其中put.CFLAGS包含要附加的内容,但是它直接附加了{r put.CFLAGS},而没有读取文件。

我该怎么做?

1 个答案:

答案 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

这很脏,但是对我有用。