我收到以下
的错误 find . -name "*" -type f | xargs grep -l "xyz" | sed -i '' 's/'${line}'/'${rep}'/g'
sed: -i may not be used with stdin
出了什么问题?
答案 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命令执行更多命令。