2017-04-19 56 views
0

我存儲在一個名爲Worker1和另一個IP地址參數的IP地址存儲在SPARK_MASTER_IP桑達 - 不working-沒有被更新,並沒有錯誤

echo $Worker1 
10.100.53.185 
echo $SPARK_MASTER_IP 
10.100.53.218 

我試圖取代線發現.zen.ping.unicast.hosts:[127.0.0.1]就像下面一行一樣。

discovery.zen.ping.unicast.hosts: ["10.100.53.218","10.100.53.185"] 

當我嘗試使用SED,沒有什麼更新,並沒有錯誤使用下面的命令。請幫我解決方案

sed -i -e "s/discovery.zen.ping.unicast.hosts: [127.0.0.1]/discovery.zen.ping.unicast.hosts: ["'$SPARK_MASTER_IP'","'$Worker1'"]/g" /etc/elasticsearch/elasticsearch.yml 

謝謝!

+2

你需要轉義[]他們在正則表達式中定義字符列表。所以不是[127.0.0.1],你應該有\\ [127.0.0.1 \\]秒鐘,你希望文件中的值使用evironement變量,你可以在整個表達式中使用'而不是'來避免「'$ varible'」這個東西,雖然不太可能是一個問題,但我不會在127.0.0.1中因爲正則表達式而忽略它,意思是任何字符,所以它會匹配127A0B0C01,所以\\ [127 \ .0 \ .0 \ .1 \\] – Rob

+0

謝謝!它不是從$ Worker1 $ SPARK_MASTER_IP讀取IP地址 sed -i -e「s/discovery.zen.ping.unicast.hosts:\ [127.0.0.1 \]/discovery.zen.ping .unicast.hosts:\ [\''$ SPARK_MASTER_IP'\「,\」'$ Worker1'\「\]/g」/etc/elasticsearch/elasticsearch.yml – Swat

+1

@Swat:請參考下面的回答! – Inian

回答

3

正如在評論中討論過,逃避[會做的伎倆你,

WORKER1="10.100.53.185" 
SPARK_MASTER_IP="10.100.53.218" 

sed -e 's/discovery.zen.ping.unicast.hosts: \["10.100.53.218","10.100.53.185"\]/discovery.zen.ping.unicast.hosts: \["'$WORKER1'","'$SPARK_MASTER_IP'"\]/g' file 
discovery.zen.ping.unicast.hosts: ["10.100.53.185","10.100.53.218"] 

添加-i標誌就地更換,一旦你確認能夠成功地發生了更換。

+0

我正在嘗試在json和ip-address中使用sed沒有通過,請幫助 「su - root -c'sed -i -e \」s/discovery.zen.ping.unicast.hosts:\\ [127 \\。0 \\。0 \\。1 \\]/discovery.zen.ping.unicast.hosts:\\ [\\\「$ SPARK_MASTER_IP \\\」,\\\「$ Worker1 \\\」\\]/g \「/etc/elasticsearch/elasticsearch.yml' \ n」個, – Swat