【问题标题】:Pipe grep output into sed to replace an entire line管道 grep 输出到 sed 以替换整行
【发布时间】:2014-12-17 21:59:31
【问题描述】:

我正在尝试将 grep 命令的输出通过管道传输到 sed 命令中的“replace me with”值。我试过 xargs 只是一个管道,但我似乎无法让它工作。我在堆栈溢出中找到的所有示例都假定我知道 grep 命令的最终结果。这是我正在尝试做的一个示例。

cat /etc/sysconfig/network | grep HOSTNAME | grep -i s/greppedline/"HOSTNAME=something"/

实际上,我不知道需要替换的行的全部内容,只知道 HOSTNAME 将在其中。有没有办法在不从 grep 命令创建变量的情况下以单线方式执行此操作?

【问题讨论】:

    标签: linux bash sed grep


    【解决方案1】:

    我认为你正在尝试这样做,

    sed '/HOSTNAME/s/.*/"HOSTNAME=something"/' /etc/sysconfig/network
    

    添加内联编辑-i 选项以保存所做的更改。

    sed -i.bak '/HOSTNAME/s/.*/"HOSTNAME=something"/' /etc/sysconfig/network
    

    【讨论】:

    • 太棒了,甚至没有意识到我可以在 sed 中使用通配符。非常感谢。
    【解决方案2】:
    sed '/HOSTNAME/ c\
    "HOSTNAME=something"/' /etc/sysconfig/network 
    

    sed 's/.*HOSTNAME.*/"HOSTNAME=something"/' /etc/sysconfig/network 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-14
      • 2018-11-18
      相关资源
      最近更新 更多