我需要使用sed将文本插入到带有引号的文件中

我需要使用sed将文本插入到带有引号的文件中,sed,Sed,嗨,Stackoverflow用户 通常我可以很好地使用sed(通常需要几次尝试)。但是,我在文件末尾添加以下文本时遇到问题: <linebreak/empty line here> [extensions] blacklist = "google-authenticator" 有人能提供一些帮助和/或指引我正确的方向吗 显然,我尝试了一些事情,但我认为我在文本中添加的额外引号有问题 错误通常是这样的: 表达式#1,字符89:未终止的地址正则表达式 表达式#1,字符91:未终止的

嗨,Stackoverflow用户

通常我可以很好地使用sed(通常需要几次尝试)。但是,我在文件末尾添加以下文本时遇到问题:

<linebreak/empty line here>
[extensions]
blacklist = "google-authenticator"
有人能提供一些帮助和/或指引我正确的方向吗

显然,我尝试了一些事情,但我认为我在文本中添加的额外引号有问题

错误通常是这样的:

  • 表达式#1,字符89:未终止的地址正则表达式
  • 表达式#1,字符91:未终止的地址正则表达式
  • 表达式#1,字符53:未终止的地址正则表达式
所以我做错了什么,我不知道如何正确添加上述内容。最好在前面有一个断线

我希望我正确地解释了这个问题。提前感谢您的帮助

//编辑

我所需要的只是添加以下文本的解决方案:

<linebreak/empty line here>
[extensions]
blacklist = "google-authenticator"

[延期]
blacklist=“谷歌认证器”
通过使用sed

因此,我可以将其应用于创建OpenVZ容器(自动)的脚本,如:vzctl exec$VEID“此处可能的sed解决方案”/文件名

抱歉,如果我以前不清楚。

请尝试使用以下方法:

  • -i
    :就地编辑文件
  • $
    :与最后一行匹配的地址
  • 文本
    :在一行后追加文本

正如他在已删除的答案中建议的那样,将要附加的文本保存到文件中并使用
r file
命令
sed

您是否只需要sed的转义字符?我以前尝试过转义字符,但后来收到了提到的错误。我没有保存我尝试过的例子。但可能我做得不对?为什么不使用
cat
来附加两个文件呢?@kvantour我正在使用一个自动脚本来设置OpenVZ容器,所以我认为使用cat来附加所有文件并不容易。这就是为什么我问了一个基于sed的解决方案或想法。谢谢你,佩萨瑟!谢谢你的解释!看了你的代码后,我发现我以前做错了什么;我没有像你那样使用“\”。现在它可以工作了,甚至可以使用vzctl命令。我也学到了很多你的解决方案。我将不得不深入研究“r file”-命令,但我一点也不理解它。我并不是每天都使用sed。无论如何,再次感谢您提供的示例/解决方案和解释!非常感谢。你让我开心!;-)
<linebreak/empty line here>
[extensions]
blacklist = "google-authenticator"
'sed -i '\''$a \\n[extensions]\nblacklist = "google-authenticator"'\'' /usr/local/psa/admin/conf/panel.ini'