sed:-i不能与stdin #Error一起使用

时间:2014-01-14 07:49:25

标签: bash sed

我收到以下

的错误

find . -name "*" -type f | xargs grep -l "xyz" | sed -i '' 's/'${line}'/'${rep}'/g'

sed: -i may not be used with stdin

出了什么问题?

3 个答案:

答案 0 :(得分:2)

假设您尝试仅在包含xyz的文件中查找某些内容,则必须再次使用xargs

find . -name "*" -type f | xargs grep -l "xyz" |xargs  sed -i "s/'${line}'/'${rep}'/g"

答案 1 :(得分:1)

-i用于内联文件编辑,你只是将st命令的输出传递给stdin中的sed,因此出现错误。

请改为使用find command

find . -name "*" -type f -exec sed -i '' "s/${line}/${rep}/g" '{}' \;

PS:-name "*"也可以在这里跳过。

答案 2 :(得分:1)

当我们使用find命令时,我们无法将输出与管道(|)连接起来。因此,您可以使用-exec with find命令执行更多命令。