149

如果我在 bash 中运行此代码:

echo dog dog dos | sed -r 's:dog:log:'

它给出输出:

log dog dos

我怎样才能让它替换所有出现的狗?

4

2 回答 2

233

您应该添加g修饰符,以便 sed 执行模式缓冲区内容的全局替换:

echo dog dog dos | sed -e 's:dog:log:g'

有关 sed 的精彩文档,请查看http://www.grymoire.com/Unix/Sed.html。这个全局标志在这里解释:http: //www.grymoire.com/Unix/Sed.html#uh-6

官方文档GNU sed位于http://www.gnu.org/software/sed/manual/

于 2013-04-06T09:23:00.507 回答
28

你必须把 ag放在最后,它代表“全球”:

echo dog dog dos | sed -r 's:dog:log:g'
                                     ^
于 2013-04-06T09:22:52.807 回答