匹配后使用 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=ASDF
和 morestuff=GASIFJ
。这些与我正在使用的 makefile 中的变量名称并不完全不同。
由于您使用双引号,因此需要转义两次,因此请使用:
sed "/MULTI LINE COMMENT/a\
LINE 1\
LINE 2 $stuff $morestuff" "$file" >> "$file"_NEW
PS: 您的示例输入有 MULTI LINE COMMENT
但您的命令有 MULTI WORD COMMENT
不是 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=ASDF
和 morestuff=GASIFJ
。这些与我正在使用的 makefile 中的变量名称并不完全不同。
由于您使用双引号,因此需要转义两次,因此请使用:
sed "/MULTI LINE COMMENT/a\
LINE 1\
LINE 2 $stuff $morestuff" "$file" >> "$file"_NEW
PS: 您的示例输入有 MULTI LINE COMMENT
但您的命令有 MULTI WORD COMMENT