我对sed有点问题。
我想用sed编辑基于XML的配置文件。在Putty中,该命令正在运行,但是当我在Bash脚本中使用相同的命令时,没有任何反应。
sed -i ./mods/deathmatch/mtaserver.conf -e \
's#<serverip>\([^<][^<]*\)</serverip>#<serverip>'`echo $IP`'</serverip>#'
为什么会出现这种情况?
答案 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。