gpt4 book ai didi

bash - 命令输出 > sed 在特定字符串后替换

转载 作者:行者123 更新时间:2023-12-04 19:36:29 26 4
gpt4 key购买 nike

您好,我正在尝试在文件中的特定字符串之后插入命令 output > sed replace 的输出,作为机器启动时用户数据的一部分

[centos@ip-192-168-2-22 scylla]$ sudo sed -i.bak 's/broadcast_rpc_address: : /broadcast_rpc_address:\/$hostname -i | awk '{print $2}'/' /etc/scylla/scylla.yaml

文件目前是
broadcast_rpc_address:

用。。。来代替
broadcast_rpc_address: (the ip of the machine)

最佳答案

像这样的东西应该工作:

sed -i.bak "s/broadcast_rpc_address:/broadcast_rpc_address: $(hostname -i)/" /etc/scylla/scylla.yaml

这将取代 broadcast_rpc_address:通过 broadcast_rpc_address: $(hostname -i) .现在,因为这个字符串是双引号——而不是单引号——这告诉 shell 解释字符串中的一些魔术序列。特别是 $(somecommand)表示运行某个命令并将其输出插入到字符串中。当然,将我上面给出的命令中的“hostname -i”更改为您想要的任何其他内容(它甚至可以是整个管道。

您最初的尝试使用了以 $hostname 开头的东西。 .这个语法, $hostname , 不运行命令 hostname ,而是查找名为 hostname 的变量,这不是你想要的。您需要 $(...)而是语法。您最初的尝试也有嵌套引号的问题,这不起作用。

关于bash - 命令输出 > sed 在特定字符串后替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56778053/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com