Unix sed XML配置编辑

时间:2014-09-06 09:00:41

标签: linux sed

我对sed有点问题。

我想用sed编辑基于XML的配置文件。在Putty中,该命令正在运行,但是当我在Bash脚本中使用相同的命令时,没有任何反应。

sed -i ./mods/deathmatch/mtaserver.conf -e \
  's#<serverip>\([^<][^<]*\)</serverip>#<serverip>'`echo $IP`'</serverip>#'

为什么会出现这种情况?

2 个答案:

答案 0 :(得分:0)

使用XML处理工具解析XML,例如xmlstarlet

$ cat config.xml 
<config><server>something</server></config>
$ xmlstarlet ed -L -O -P -u //server -v new_value config.xml
$ cat config.xml 
<config><server>new_value</server></config>

答案 1 :(得分:0)

不要全力以赴&#39; Clippy&#39;在你身上,但看起来你正试图将你的配置指向一个不时改变IP的服务器。

您可以考虑在/etc/hosts文件中创建本地名称,并将配置保持静态。

假设您的死亡竞赛服务器IP为10.10.10.1

# in your /etc/hosts:
10.10.10.1   deathmatch

然后在你的mtaserver.conf中,你只需要引用deathmatch(或任何你喜欢的名字)而不是IP地址。您的计算机应将deathmatch解析为您的服务器IP地址。

根据您的计算机上的名称解析方式,这应该可行。如果您查看/etc/nsswitch.conf,您应该会在files

之前看到一行宣告dns
vagrant@precise32:~$ grep '^hosts' /etc/nsswitch.conf
hosts:          files dns

如果您看到这一点,您可以在/etc/hosts中管理IP。