如何将文件名传递给sed

时间:2014-01-30 15:23:54

标签: unix sed grep

我正在尝试以下

grep 178 * | sed 's/178/179/g'

Results:

ifcfg-bond0:IPADDR=10.30.10.179
ifcfg-bond1:IPADDR=10.30.8.179
rule-bond0:from 10.30.10.179 table sip

但是,当我尝试将-i选项传递给sed以永久更改时,我得到以下内容。

grep 178 * | sed -i 's/178/179/g'
sed: no input files

有什么想法吗?

2 个答案:

答案 0 :(得分:5)

这就是我开始工作的方式! :)

 grep -rl 178 ../network/ | xargs sed -i 's/178/179/g'

答案 1 :(得分:2)

如何避免使用

的叉子/管道
 sed -i 's/178/179/g' *

不包含178的文件不会受到影响。

你问题中的原文无法正常工作,因为-i替换了文件,但是你通过stdin管道数据(就地替换就没有意义了) )。