匹配后使用 sed 追加多行(使用 shell 变量)

Using sed to append multiple lines (with shell variables) after match

不是 GNU sed。我有一组要统一修改的生成文件。在每个 makefile 中,我都有一条注释告诉我将代码放在哪里。

sed "/MULTI WORD COMMENT/a\
LINE 1\
LINE 2 $stuff $morestuff" "$file" >> "$file"_NEW

我想找到评论,然后在其后追加多行文字。有些行包含我要扩展的 shell 个变量。我能弄清楚的是,当我想做 shell expansions 时我需要使用 " 并且要附加的每一行都应该有自己的行。

我收到一条错误消息,提示我使用“\”终止 "a" 命令,但看起来我已经在这样做了。我做错了什么?

示例输入

# MULTI WORD COMMENT
.SUFFIXES: .o .c

示例输出

# MULTI WORD COMMENT
LINE 1
LINE 2 ASDF GASIFJ
.SUFFIXES: .o .c

在这种情况下,stuff=ASDFmorestuff=GASIFJ。这些与我正在使用的 makefile 中的变量名称并不完全不同。

由于您使用双引号,因此需要转义两次,因此请使用:

sed "/MULTI LINE COMMENT/a\
LINE 1\
LINE 2 $stuff $morestuff" "$file" >> "$file"_NEW

PS: 您的示例输入有 MULTI LINE COMMENT 但您的命令有 MULTI WORD COMMENT