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

时间:2018-07-13 08:42:29

标签: sed

嗨,Stackoverflow用户,

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

<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'可能的sed解决方案'/文件名

对不起,如果我以前不太清楚。

1 个答案:

答案 0 :(得分:2)

尝试使用此GNU sed

    <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.3.RELEASE</version>
    <relativePath /> <!-- lookup parent from repository -->
</parent>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
    <activiti.version>6.0.0</activiti.version>
</properties>
  • 'sed -i '\''$a \\n[extensions]\nblacklist = "google-authenticator"'\'' /usr/local/psa/admin/conf/panel.ini' :就地编辑文件
  • -i:与最后一行匹配的地址
  • $:在一行之后添加文字

就像在他的已删除答案中推荐@Kent一样,将要追加的文本保存到文件中并使用a text命令r file更具可读性和简便性。