Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash Sed-不工作-未更新任何内容且无错误_Bash_Unix_Sed - Fatal编程技术网

Bash Sed-不工作-未更新任何内容且无错误

Bash Sed-不工作-未更新任何内容且无错误,bash,unix,sed,Bash,Unix,Sed,我将ip地址存储在名为Worker1的参数中,另一个ip地址存储在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

我将ip地址存储在名为Worker1的参数中,另一个ip地址存储在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

谢谢

如评论中所述,逃避
[
将为您带来好处

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
标志。

如评论中所述,跳过
[
将为您带来好处

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
标志。

您需要转义正则表达式中定义字符的[]列表。因此,您应该使用\[127.0.0.1],而不是[127.0.0.1]第二,您是否希望文件中的值使用eVironment变量,您可以在整个表达式中使用“而不是”。并避免使用“$varible”。尽管这不太可能是一个问题,但我会跳过127.0.0.1中的。因为在正则表达式中。表示任何字符,因此它将匹配127A0B0C01 so\[127\.0\.0\.1\]谢谢!它没有从$Worker1$SPARK\u MASTER\u IP sed-i-e“s/discovery.zen.ping.unicast.hosts:\[127.0.0.1]/discovery.zen.ping.unicast.hosts:[\“$SPARK\u MASTER\u IP'\”,\“$Worker1'\”]/g”/etc/elasticsearch/elasticsearch。yml@Swat:参考下面我的答案!你需要逃离[]它们定义正则表达式中的字符列表。因此,您应该有\[127.0.0.1\]秒而不是[127.0.0.1\]秒,您是否希望文件中的值使用环境变量,您可以在整个表达式中使用“而不是”来代替。并避免使用“$Variable”还有一件事。虽然不太可能是一个问题,但我会逃避。在127.0.0.1中,因为在正则表达式中。表示任何字符,以便它匹配127A0B0C01 so\[127\.0\.0\.1\]谢谢!它不是从$Worker1$SPARK\.u MASTER\.u IP sed-I-e“s/discovery.zen.ping.unicast.hosts:\[127.0.0.1]/discovery.zen.ping.unicast.hosts:[\”“$SPARK\u MASTER\u IP'\”,“$Worker1'\”]/g”/etc/elasticsearch/elasticsearch。yml@Swat:请参考下面的答案!我正在尝试在json中使用sed,并且ip地址未传递,请帮助“su-root-c'sed-I-e\”s/discovery.zen.ping.unicast.hosts:\[127\\.0\\.0\.1\]/discovery.zen.ping.unicast.hosts:\[\\\\\\\\\\\\\”$SPARK\u MASTER\u ip\\\\\,\\\\\\\\\\\\\\$Worker1\]/g\“/etc/elasticsearch/elasticsearch.yml'\n”,我正在尝试在json中使用sed,ip地址未传递,请帮助“su-root-c'sed-I-e\”s/discovery.zen.ping.unicast.hosts:\[127\\\.0\.0\.1\]/discovery.zen.ping.unicast.hosts:\[\\\\\\\\\\\\\\\\\\\“$SPARK\\\\\$MASTER\u ip\\”,\\\\\\\$Worker1\\\\\\\\\\]/g\”/etc/elasticsearch/el,