【问题标题】:sed command add multiple lines bashsed 命令添加多行 bash
【发布时间】:2014-07-23 08:23:49
【问题描述】:

我是 Linux 中 bash 编码的新手。我想在 maven 项目中将插件添加到我现有的 pom 文件中。所以想添加这个插件。这是我更改文件的方式。但它失败了。

sed -i "47 i\<plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-compiler-plugin</artifactId>
               <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
               </configuration>
          </plugin>"

" animalNames.txt 

【问题讨论】:

    标签: bash maven sed newline


    【解决方案1】:

    使用此数据创建一个名为 plugin.tmp 的文件:

    <plugin>
                   <groupId>org.apache.maven.plugins</groupId>
                   <artifactId>maven-compiler-plugin</artifactId>
                   <configuration>
                        <source>1.7</source>
                        <target>1.7</target>
                   </configuration>
    </plugin>
    

    然后将其插入到animalNames.txt 的第 #47 行:

    sed -i.bak '47r plugin.tmp' animalNames.txt 
    

    创建plugin.tmp 文件:

    cat << EOF > plugin.tmp
    <plugin>
                   <groupId>org.apache.maven.plugins</groupId>
                   <artifactId>maven-compiler-plugin</artifactId>
                   <configuration>
                        <source>1.7</source>
                        <target>1.7</target>
                   </configuration>
    </plugin>
    EOF
    

    【讨论】:

    • 谢谢,但我无法创建文件。在 bash 脚本中我想更改代码。
    • 我知道我可以创建文件文件。但我的目的是不允许创建文件。像这样更改 可以吗?
    • 您可以在/tmp目录下创建一个文件。另外,如果您没有写权限,sed -i 将如何为您工作?
    • 我已经按照你说的做了。但不是把我的插件代码写到 pom.xml 文件中
    • 我在这里发布的是工作代码,即使在旧版本的 sed 上也能工作。确保按原样复制/粘贴。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-28
    • 2013-12-07
    • 1970-01-01
    • 1970-01-01
    • 2018-12-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多