0

嗨 Stackoverflow 用户,

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

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

进入一个名为:/usr/local/psa/admin/conf/panel.ini 的文件

为了让事情“更”复杂,我还使用了 OpenVZ 自动化中的命令。像这样:

vzctl exec $VEID 'sed XX "VALUE FROM ABOVE" /usr/local/psa/admin/conf/panel.ini'

有人可以提供一些帮助和/或指导我正确的方向吗?

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

错误总是这样的:

  • 表达式 #1,字符 89:未终止的地址正则表达式
  • 表达式 #1,字符 91:未终止的地址正则表达式
  • 表达式 #1,字符 53:未终止的地址正则表达式

所以我做错了,我不知道如何正确添加上述内容。最好在前面有一个换行符。

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

//编辑

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

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

通过使用 sed。

所以我可以将它应用到创建 OpenVZ 容器(自动)的脚本中,例如: vzctl exec $VEID 'possible sed solution here' /file-name

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

4

1 回答 1

1

尝试使用这个GNU sed

'sed -i '\''$a \\n[extensions]\nblacklist = "google-authenticator"'\'' /usr/local/psa/admin/conf/panel.ini'
  • -i: 就地编辑文件
  • $: 匹配最后一行的地址
  • a text: 在一行之后追加文本

就像@Kent在他删除的答案中推荐的那样,将要附加到文件中的文本保存到文件中并使用r file命令 to会更具可读性和简单性sed

于 2018-07-13T09:19:14.360 回答