【问题标题】:How to run a command in sed in Linux?如何在 Linux 的 sed 中运行命令?
【发布时间】: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 " ") 命令?

【问题讨论】:

  • 双引号而不是单引号应该可以。

标签: linux sed


【解决方案1】:

这可能对你有用(GNU sed):

sed -i '/1\.1\.1\.1/{s//$(hostname -I | cut -f1 -d " ")/;s/.*/echo "&"/e}' file

将命令放在$(...) 之间,然后使用替换命令的评估标志回显该行。

【讨论】:

    【解决方案2】:

    只使用一个变量。

    hn=$(hostname -I | cut -f1 -d" ") && sed -i "s/1\.1\.1\.1/$hn/g" file
    

    Sed 的 es///e 在整个模式空间上工作,所以麻烦多于其价值。

    【讨论】:

      猜你喜欢
      • 2013-06-05
      • 1970-01-01
      • 2011-05-29
      • 1970-01-01
      • 2012-09-23
      • 1970-01-01
      • 2018-02-26
      • 2013-11-23
      • 1970-01-01
      相关资源
      最近更新 更多