【发布时间】:2017-04-20 03:04:33
【问题描述】:
我将 ip-address 存储在一个名为 Worker1 的参数中,另一个 ip-address 存储在 SPARK_MASTER_IP 中
echo $Worker1
10.100.53.185
echo $SPARK_MASTER_IP
10.100.53.218
我正在尝试替换行 discovery.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
谢谢!
【问题讨论】:
-
你需要转义他们在正则表达式中定义的字符列表的[]。所以不是 [127.0.0.1] 你应该有 \[127.0.0.1\] 第二你是否希望文件中的值使用环境变量你可以在整个表达式周围使用 ' 而不是 " 并避免 "' $varible'" 的东西。虽然不太可能是一个问题,但我会在 127.0.0.1 中转义 . 因为在正则表达式中 . 表示任何字符,所以它会匹配 127A0B0C01 所以 \[127\.0\.0\.1\]
-
谢谢!它没有从 $Worker1 $SPARK_MASTER_IP sed -i -e "s/discovery.zen.ping.unicast.hosts: \ [127.0.0.1]/discovery.zen.ping.unicast.hosts: [\"' 读取 IP 地址$SPARK_MASTER_IP'\",\"'$Worker1'\"]/g" /etc/elasticsearch/elasticsearch.yml
-
@Swat:请参阅下面的答案!