繁体   English   中英

如何在 Linux 中的 sed 中运行命令?

[英]How to run a command in sed in Linux?

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 的es///e作用于整个模式空间,所以麻烦多于其价值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM