gpt4 book ai didi

regex - 使用 sed 捕获的组变量作为 bash 命令的输入

转载 作者:太空狗 更新时间:2023-10-29 12:10:34 24 4
gpt4 key购买 nike

我有这样的文字: TEXT="I need to replace the hostname [[google.com]] with it's ip in side the text"

有没有办法使用像下面这样的东西,但工作? sed -Ee "s/\[\[(.*)\]\]/`host -t A \1 | rev | cut -d " " -f1 | rev`/g" <<< $TEXT

看起来 \1 的值没有传递给 sed 内部使用的 shell 命令。

谢谢

最佳答案

反引号插值由 shell 执行, 而不是 sed。这意味着您的反引号将在运行 sed 命令之前被命令的输出替换,或者(如果您正确引用它们)它们根本不会被替换,sed 将看到反引号。

您似乎试图让 sed 执行替换,然后让 shell 执行反引号插值。

您可以通过正确引用它们来使反引号通过 shell:

$ echo "" | sed -e 's/^/`hostname`/'
`hostname`

但是,在这种情况下,您将不得不在 shell 命令行中使用生成的字符串来再次引起反引号插值。

根据您对 awk、perl 或 python 的感觉,我建议您使用其中之一一次性完成这项工作。或者,您可以先将主机名提取到不带反引号的命令中,然后执行命令以获取所需的 IP 地址,然后在另一遍中替换它们。

关于regex - 使用 sed 捕获的组变量作为 bash 命令的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46015273/

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