查找并替换为 Bash

0 command-line bash scripts sed

我正在尝试用配置文件中的其他文本替换一些文本。我使用该sed命令创建了一个脚本,但出现错误。

原线:

<property name="encryptData">false</property>
Run Code Online (Sandbox Code Playgroud)

新队:

<property name="encryptData">true</property>
Run Code Online (Sandbox Code Playgroud)

命令:

sed -i -e 's/<property name="encryptData">false</property>/<property name="encryptData">true</property>/g' /Users/User/Desktop/mirth.cfg
Run Code Online (Sandbox Code Playgroud)

错误:

sed: 1: "s/<property name="encry ...": bad flag in substitute command: '<'
Run Code Online (Sandbox Code Playgroud)

Tor*_*ien 5

命令几乎是完美的。你的问题是你需要在斜线前面</property>加上这样的反斜线\

sed -i -e 's/<property name="encryptData">false<\/property>/<property name="encryptData">true<\/property>/g' /Users/User/Desktop/mirth.cfg
Run Code Online (Sandbox Code Playgroud)

观察到我对这两种情况都做到了。

这样 sed 就会知道这个斜杠是流的一部分,而不是命令 's' 的一部分。

希望这可以解决您的问题。

  • @user491764:不要感谢托里恩!**;-)** 如果这个答案确实有帮助,只需单击数字下方的小灰色 **☑** 现在将其变成美丽的绿色。这是你能给他的最好的感谢,因为这意味着[是的,这个答案是有效的](http://askubuntu.com/help/accepted-answer)!**;-)** (2认同)