管道 grep 输出到 sed 以替换整行

Posted

技术标签:

【中文标题】管道 grep 输出到 sed 以替换整行【英文标题】:Pipe grep output into sed to replace an entire line 【发布时间】: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 命令创建变量的情况下以单线方式执行此操作?

【问题讨论】:

【参考方案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 

【讨论】:

以上是关于管道 grep 输出到 sed 以替换整行的主要内容,如果未能解决你的问题,请参考以下文章

文本处理工具之---sed

sed工具

正则介绍 sed

sed 一

sed工具

?9.4 9.5 sed