【发布时间】:2022-01-22 19:10:19
【问题描述】:
sed -i 's/1.1.1.1/ `hostname -I | cut -f1 -d " "`/g' file.txt
无法在给定文件中使用 sed 命令覆盖 IP 地址。如何使用 sed 命令运行这个 (hostname -I | cut -f1 -d " ") 命令?
【问题讨论】:
-
双引号而不是单引号应该可以。
sed -i 's/1.1.1.1/ `hostname -I | cut -f1 -d " "`/g' file.txt
无法在给定文件中使用 sed 命令覆盖 IP 地址。如何使用 sed 命令运行这个 (hostname -I | cut -f1 -d " ") 命令?
【问题讨论】:
这可能对你有用(GNU sed):
sed -i '/1\.1\.1\.1/{s//$(hostname -I | cut -f1 -d " ")/;s/.*/echo "&"/e}' file
将命令放在$(...) 之间,然后使用替换命令的评估标志回显该行。
【讨论】:
只使用一个变量。
hn=$(hostname -I | cut -f1 -d" ") && sed -i "s/1\.1\.1\.1/$hn/g" file
Sed 的 e 和 s///e 在整个模式空间上工作,所以麻烦多于其价值。
【讨论】: