管道 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 以替换整行的主要内容,如果未能解决你的问题,请参考以下文章