shell脚本替换并添加带有特殊字符的下一行

时间:2016-04-20 22:08:48

标签: linux bash shell sed

我正在尝试用另一行替换一行,并使用shell脚本在下面添加新行。我的文件内容如下所示。我想将export PATH替换为JAVA_HOME=/usr/lib/jvm/java-1.8.0-ibm-1.8.0.2.10-1jpp.1.el7.x86_64 export PATH JAVA_HOME

之前:

export PATH

应该是:

JAVA_HOME=/usr/lib/jvm/java-1.8.0-ibm-1.8.0.2.10-1jpp.1.el7.x86_64

export PATH JAVA_HOME

这意味着,它必须用这两行代替替换导出PATH。

请帮助我如何使用sed或shell脚本

谢谢, 库马尔。

1 个答案:

答案 0 :(得分:1)

sed -e 's#^export PATH$#JAVA_HOME=/usr/lib/jvm/java-1.8.0-ibm-1.8.0.2.10-1jpp.1.el7.x86_64\n\nexport PATH JAVA_HOME#' <yourfile.txt

这只是sed。

中的一个 s ubstitute命令

一些注意事项:

  • 在{strong> s 之后使用#而不是通常的/,以避免引用路径中的所有斜杠。否则,您必须以这种方式引用路径中的每个//。你只需要引用#

  • 转义序列\n插入换行符。

  • 如果要实际更新文件,请将-i参数添加到sed。上面的代码仅将新文件打印到 stdout

  • 正则表达式是锚定^...$),因此它匹配整行,而不仅仅是它的一部分。