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

Sed 如何查找字符串并附加(不安全)文本?,sed,sh,Sed,Sh,我正在尝试创建一个autoconf脚本,以便在Makefile中的变量(例如$(CFLAGS)->$(CFLAGS)-Inside)之后追加一个文本。sed不起作用,因为我的字符串可能有“/”和其他不受控制的字符 目标是,在每次匹配A之后,添加文本B,而不对其进行任何处理 我尝试了sed-e“s/\$(CFLAGS)/&{r put.CFLAGS}/g”其中put.CFLAGS包含要追加的内容,但它直接追加{r put.CFLAGS},而不读取文件 我该怎么做呢?晚上给我一个很好的暗示 我已经通

我正在尝试创建一个autoconf脚本,以便在Makefile中的变量(例如$(CFLAGS)->$(CFLAGS)-Inside)之后追加一个文本。sed不起作用,因为我的字符串可能有“/”和其他不受控制的字符

目标是,在每次匹配A之后,添加文本B,而不对其进行任何处理

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

我该怎么做呢?

晚上给我一个很好的暗示

我已经通过使用转义序列实现了我想要的。 首先,我用转义序列替换不安全的字符,在我的例子中,我使用
sed的/\/\\\\057/g;转换为&->\046和/->\057的s/&/\\\\046/g'
(要转换为刚刚得到的\057和\046,请使用
sed的s/\/\\057/g;s/&/\\046/g'

然后printf将转义字符还原为原始含义

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
其中:

  • RAW
    包含不安全的东西
  • MAKEVAR\u LIST
    附加
    RAW
  • vache.makoge
    最终生成文件
脏兮兮的,但这对我来说很有用。

看起来像。你可以这样做,但几乎肯定有更好的方法。可能会添加一行(“CFLAGS+=-Inside”),或者让您的makefile
包含参数文件。