我有一個小問題sed。Unix sed XML配置編輯
我想用sed編輯一個基於XML的配置文件。在Putty中,該命令正在工作,但是當我在Bash腳本中使用相同的命令時,什麼都不會發生。
sed -i ./mods/deathmatch/mtaserver.conf -e \
's#<serverip>\([^<][^<]*\)</serverip>#<serverip>'`echo $IP`'</serverip>#'
任何想法,爲什麼這可能是這種情況?
我有一個小問題sed。Unix sed XML配置編輯
我想用sed編輯一個基於XML的配置文件。在Putty中,該命令正在工作,但是當我在Bash腳本中使用相同的命令時,什麼都不會發生。
sed -i ./mods/deathmatch/mtaserver.conf -e \
's#<serverip>\([^<][^<]*\)</serverip>#<serverip>'`echo $IP`'</serverip>#'
任何想法,爲什麼這可能是這種情況?
解析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>
xmlstarlet工作thx,但我必須用sed解決它 – Prophet 2014-09-06 19:02:35
不走所有的「大眼夾」上你,但它看起來像你試圖在改變服務器指向你的配置IP不時。
您可能會考慮在/etc/hosts
文件中創建本地名稱,並保持靜態配置。
假設你的死鬥服務器IP是10.10.10.1
:
# in your /etc/hosts:
10.10.10.1 deathmatch
然後在你的mtaserver.conf
你只需把它引用(你喜歡或任何名稱)deathmatch
而不是IP地址。您的機器應該將deathmatch
解析爲您的服務器IP地址。
根據您機器上的名稱解析方式,這應該是正常的。如果你看一下你應該看到,聲明files
之前dns
[email protected]:~$ grep '^hosts' /etc/nsswitch.conf
hosts: files dns
如果你看到這個,你應該確定管理IP在/etc/hosts
線。
請勿使用反引號(**'**);使用'$(echo「$ IP」)'或者在整個sed命令周圍使用雙引號,只要'$ IP'就可以工作。 – 2014-09-06 09:25:07
你有出口IP嗎? – linuts 2014-09-06 10:04:03