使用sed在匹配后附加多行(带有shell变量)

时间:2015-07-22 19:52:40

标签: bash sed posix

不是GNU sed。我有一系列makefile,我正在尝试统一修改。在每个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中的变量名称并不完全不同。

1 个答案:

答案 0 :(得分:2)

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

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

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