不是 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=ASDF
和 morestuff=GASIFJ
。这些与我正在使用的 makefile 中的变量名称并不完全不同。
最佳答案
由于您使用双引号,因此需要转义两次,因此请使用:
sed "/MULTI LINE COMMENT/a\\
LINE 1\\
LINE 2 $stuff $morestuff" "$file" >> "$file"_NEW
PS:您的示例输入具有多行注释
,但您的命令具有多字注释
关于bash - 使用 sed 在匹配后追加多行(带有 shell 变量),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31572760/